我的老师解释得不是很好,所以我问你为什么这段代码会把一个字符变成十六进制?
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-> 61 A->41 0->30
发布于 2015-12-24 17:28:12
该代码只是将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 DIGIThttps://stackoverflow.com/questions/34449591
复制相似问题