gpt4 book ai didi

汇编语言: printing lowercase to uppercase

转载 作者:行者123 更新时间:2023-12-03 03:30:54 27 4
gpt4 key购买 nike

我有一个任务,描述如下:

- Reads printable characters (20h-7Fh) from the keyboard without echoing
- Uppercase letters are printed to display
- Lowercase letters are converted to uppercase and then printed to display
- Blank spaces and periods are printed to display; everything else is trashed
- Program ends when period is printed

到目前为止我的程序是这样的:

    .model      small
.8086


.data


.code

start:
mov ax,@data
mov ds,ax

read:
mov ah,8
int 21h
cmp al,61
jl write
cmp al,7fh
jg read
sub al,20h
jmp write

write: cmp al,20h
jl read
mov dl,al
mov ah,2
int 21h
cmp dl,2eh
jne read

exit:
mov ax,4c00h
int 21h
end start

我的程序成功转换小写字母并打印相应的大写字母,但我无法删除其他所有内容。只允许空格、句点和字母进入显示屏的最佳方法是什么?

查看 ASCII 图表,

21h - 2Dh can be trashed
2Fh - 40h can be trashed
5bh - 60h can be trashed
7bh - 7fh can be trashed

任何人都可以帮助我想出最好的逻辑来将输入与这些值进行比较,然后丢弃那些落在上述范围之间的值吗?我们根据效率进行评分,编写 0-20 条指令可获得满分。我这里已经有 20 条指令,并且还没有包含用于查找垃圾值的比较。

编辑
这是我将代码范围缩小到的内容:

    .model      small
.8086


.data


.code


read:
mov ah,8
int 21h
cmp al,' '
je write
cmp al,'.'
je write
cmp al,'a'
jl read
cmp al,'Z'
jg convert

convert:
cmp al,'a'
jl read
sub al,20h

write:
mov dl,al
mov ah,2
int 21h
cmp dl,'.'
jne read

exit:
mov ax, 4c00h
int 21h
end read

目前21号指令!我的代码中是否有任何冗余可以删除以将其减少到 20?

最佳答案

我认为您可以通过执行以下操作来保存一些说明:

read:
if lowercase then make uppercase
if uppercase then print
if space then goto print
if period then quit
goto read

print:
do the print
goto read

关于汇编语言: printing lowercase to uppercase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com