问几个很简单的汇编语句

1.ADD DL,30H 这是将十进制转为ASCII码 ,为什么?
2.OR DL,30H 这句是什么意思?
3.SUB AL,30H 将十进制的ASCII码转为二进制,为什么?
4.AND AL,0FH 保存低4位 为什么?
5.CMP AL,3AH 判断16进制的ASCII码是否为A~F 为什么?
6.XOR BL,BL 清BL为0 为什么?
我急用 希望大家认真帮我解答 !

1:ADD DL,30H ASCII字符'0'到'9'的十六进制表示为30h到39h。例如DL=1,则ADD后DL=31H,即DL为ASCII的字符'1',即DL由数字1转为ASCII字符'1'

2.OR DL,30H :30H用二进制表示为0011 0000,其第四位和第五位为1.则用OR运算后,DL的第四位和第五位将置1,其他的位不变。

3.SUB AL,30H ASCII字符'0'到'9'的十六进制表示为30h到39h。例如AL为ASCII的'5',则十六进制表示为35H。做SUB运算后,AL值为5H。所以是将ASCII字符转换为数字。

4.AND AL,0FH :0FH用二进制表示为0000 1111,其0-3位(低四位)都是1。用AND运算,高四位的0 AND 任何的值都是0,而低四位的1 AND 任何的值 它的值还是保持不变。

5.CMP AL,3AH 这里应该是CMP AL,41H吧,ASCII字符'A'到'Z'的十六进制表示为41h到5Ah.并且仅仅只是判断AL是否为'A',如果是判断是否为'C',则cmp AL,43H

6.XOR BL,BL 清0,很简单,BL异或BL,那BL的每一位在异或时都是一致的。如BL第一位是1,那1 xor 1 = 0 。如果BL的第一位为0,那0 xor 0 = 0,所以不管BL是任意值,BL异或BL自身都为0(自身异或自身都是0)。你随便设BL为一个值,用纸笔算算就知道了。
温馨提示:答案为网友推荐,仅供参考
相似回答