6、将ASCII码表示的十进制数转换为二进制数 规定:被转换的ASCII码十进制数45、12(即34H,35H,31H,32H)存放在0500H~0503H单元中,转换的结果存放在20H,21H单元中。
时间: 2023-12-11 08:05:19 浏览: 92
ASCII码表示的十进制数转换成二进制数,可以使用除2取余法,将十进制数不断除以2,直到商为0为止,将余数倒序排列即可得到二进制数。
以45为例,45除以2的商为22余1,22除以2的商为11余0,11除以2的商为5余1,5除以2的商为2余1,2除以2的商为1余0,1除以2的商为0余1,因此45的二进制表示为:101101。
同理,12的二进制表示为:1100。
下面是汇编语言的实现:
```
MOV AX,0500H ; 将0500H的值存入AX寄存器
MOV BX,20H ; 将20H的值存入BX寄存器
MOV CX,4 ; 循环4次,每次处理一个ASCII码
Start:
MOV DL,[AX] ; 将AX所指向的地址中的值存入DL寄存器
MOV DH,0 ; 清空DH寄存器
MOV SI,8 ; 将SI寄存器的值设置为8(二进制数的位数)
Loop1:
SHR DL,1 ; 将DL寄存器的值右移一位,相当于除以2
JC Add1 ; 如果CF标志位为1,说明DL寄存器的最后一位是1,跳转到Add1处
JMP Next1 ; 否则跳转到Next1处
Add1:
ADD DH,2^SI ; 将2的SI次方加到DH寄存器中
Next1:
DEC SI ; 将SI寄存器的值减1
JNZ Loop1 ; 如果SI寄存器的值不为0,跳转到Loop1处
MOV [BX],DH ; 将DH寄存器的值存入BX所指向的地址中
INC BX ; 将BX寄存器的值加1,指向下一个地址
INC AX ; 将AX寄存器的值加1,指向下一个ASCII码的地址
LOOP Start ; 循环Start处的指令,直到CX寄存器的值为0
```
执行完上述程序后,20H和21H的值分别为101101和1100,即45和12的二进制表示。
阅读全文