我的老师没有解释得那么好,所以我问你为什么这段代码会将一个字符改成十六进制?
proc convert
cmp DL, 9
jbe its_a_digit ;JUMP IF ( DL <= 9 )
;its_a_letter: IF NO JUMP, STAYS HERE
add dl, 55 ;CONVERT TO LETTER
jmp finish
its_a_digit:
add dl, 48 ;CONVERT TO DIGIT
finish:
ret
endp
例如a-&gt; 61 A-> 41 0-> 30
答案 0 :(得分:2)
该代码只是将数字从[0-15]范围内的DL寄存器转换为 ASCII 代码。
将寄存器DL的输入编号与9
进行比较cmp DL, 9
jbe its_a_digit ;JUMP IF ( DL <= 9 )
如果输入数字大于9,请添加“A”符号
的ASCII代码add dl, 55 ;CONVERT TO LETTER
jmp finish
如果输入数量小于或等于9,则添加“0”(零)符号的ASCII码
its_a_digit:
add dl, 48 ;CONVERT TO DIGIT