Assembly 如何使用汇编语言编写此程序

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,

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, 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