作业帮 > 综合 > 作业

SUB AL,07H 有什么用?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/16 14:13:22
SUB AL,07H 有什么用?
DATA SEGMENT
NUM DB ,
SUM DB
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,2
LEA SI,NUM
S0:
MOV AH,01H
INT 21H
CMP AL,'9'
JBE NEXT
SUB AL,07H -->有什么作用?
NEXT:
SUB AL,30H -->有什么作用?
MOV [SI],AL
INC SI
LOOP S0
LEA SI,NUM
MOV AL,[SI]
ADD AL,[SI+1]
MOV SUM,AL
MOV AX,4C00H
INT 21H
CODE ENDS
END START
SUB AL,07H 有什么用?
1、首先这两句,是把输入的一个字符给了AL
!注意:AL存的是ASCII码,比如说你输入1,AL存的是31H,也就是十进制的48
如果你输入A,存的是41H,也就是十进制的65
MOV AH,01H
INT 21H
2、 比较AL的字符是不是大于9,因为十六进制的数大于10,要用ABCDEF了,这个你应该知道.
但是A的ASCII码是41H,也就是十进制的65.这个值减去37H,也就是十进制的55,正好就是十进制的10,正好就是A的十进制表达.字母B 42H-37H=BH,也就是十进制的11
CMP AL,'9'
JBE NEXT
你问的这两句
SUB AL,07H
这句话就是如果输入的字符大于10,就先减去07H,以为一会还要减30H,加起来就是减了37H
NEXT:
SUB AL,30H -->这句话是减去30H,ASCII转为真正的数字,上面有解释.因为无论如何这个都执行,所以上面那个大于10的先减去的07H,是为了程序简单一些而已