Assembly 如何使用汇编语言编写此程序
1-编写程序,测试从键盘读取的字符是否正确,如果字符为: (i) 一个有效的小写字母('a'No 您的第一个程序只测试AL是否为小写字母“a”。它还有一个语法错误,因为您在这里使用ok_作为指令,而不是标签(标签将是Assembly 如何使用汇编语言编写此程序,assembly,x86-16,Assembly,X86 16,1-编写程序,测试从键盘读取的字符是否正确,如果字符为: (i) 一个有效的小写字母('a'No 您的第一个程序只测试AL是否为小写字母“a”。它还有一个语法错误,因为您在这里使用ok_作为指令,而不是标签(标签将是然后)。此外,我猜Tmp指令实际上是JMP指令 要使您的第一个程序正确,必须测试AL中的值是否等于或大于“a”,是否等于或小于“z”: CMP AL,'a' JB notok CMP AL,'z' JA notok ok_here: ;if we reach this point,
然后)。此外,我猜Tmp指令实际上是JMP指令
要使您的第一个程序正确,必须测试AL中的值是否等于或大于“a”,是否等于或小于“z”:
CMP AL,'a'
JB notok
CMP AL,'z'
JA notok
ok_here: ;if we reach this point, AL is a lowercase letter
您的第二个程序做了类似的事情:如果AL是“a”、“a”或“z”,则此处仅转到ok_。您仅使用JE指令,如果AL等于CMP指令的第二个操作数,则该指令将跳转。要修复它,请使用前面的代码测试AL是否为小写,如果是,则重复测试,但这次使用“a”和“z”。即:四个CMP和f我们的条件跳跃
此外,您的程序缺少字符串来告诉用户输入一个字符,也没有打印出来的消息来告诉用户该字符是否符合标准。请参阅,以了解您没有得到任何答案的原因。(对于好的问题,我们通常会在几分钟内全部解答。)运行时会发生什么?是否有任何错误?请在帖子中提出一个问题(或至少只提出相关问题)。
mov AH,1h
int 21h
cmp Al,'a'
JE then
Cmp AL,'A'
JE then
Cmp AL,'z'
JE then
JMP else
Then ok_here
Jmp End if
Else mov AH,4CH
Int 21h
End if
.model small
.stack 100h
.data
CR EQU 0DH
LF EQU 0AH
MSG1 DB 'enter an uppercase letter'
MSG2 DB CRLF ' the lowercase equivalent'
CHAR DB ?
.code
Main proc
Mov AX @data
Mov DS,AX
LEA DX,MSG1
Mov AH,@H
Int 21h
SAR AL.20h
Mov CHAR,AL
LGA DX ,MSG2
Mov AH,02H
Int 21h
Mov AH,4CH
Int 21h
Main Endp
End main
CMP AL,'a'
JB notok
CMP AL,'z'
JA notok
ok_here: ;if we reach this point, AL is a lowercase letter