将bx中的二进制数转换为十六进制输出

binihex proc near
mov ch,4
rotate:
mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
ret
binihex endp

下面是使用汇编语言实现将十六位二进制转换为三位ASCII码的代码: ```asm ORG 0x0000 ; 代码起始地址 ; 以0x1234为例,将其转换为三位ASCII码 MOV AX, 0x1234 ; 将0x1234赋值给AX寄存器 MOV BX, 1000 ; BX寄存器存放1000,用于计算千位字 MOV CX, 0 ; CX寄存器初始化为0,用于计算ASCII码值 MOV DX, 0x3030 ; DX寄存器存放ASCII码“0”的值,用于转换 ; 计算千位字 DIV BX ; 将AX寄存器的值除以BX寄存器的值,商存放在AL寄存器,余存放在AH寄存器 ADD AL, DL ; 将商的ASCII码值加上DX寄存器的值,得到千位字的ASCII码值 MOV [0x8000], AL ; 将千位字的ASCII码值存放在内存地址0x8000 ; 计算百位字 MOV BX, 100 ; BX寄存器存放100,用于计算百位字 DIV BX ; 将AX寄存器的值除以BX寄存器的值,商存放在AL寄存器,余存放在AH寄存器 ADD AL, DL ; 将商的ASCII码值加上DX寄存器的值,得到百位字的ASCII码值 MOV [0x8001], AL ; 将百位字的ASCII码值存放在内存地址0x8001 ; 计算十位字 MOV BX, 10 ; BX寄存器存放10,用于计算十位字 DIV BX ; 将AX寄存器的值除以BX寄存器的值,商存放在AL寄存器,余存放在AH寄存器 ADD AL, DL ; 将商的ASCII码值加上DX寄存器的值,得到十位字的ASCII码值 MOV [0x8002], AL ; 将十位字的ASCII码值存放在内存地址0x8002 ; 计算个位字 MOV AL, AH ; 将余AH寄存器的值赋值给AL寄存器 ADD AL, DL ; 将余的ASCII码值加上DX寄存器的值,得到个位字的ASCII码值 MOV [0x8003], AL ; 将个位字的ASCII码值存放在内存地址0x8003 END ; 代码结束 ``` 以上代码的实现过程是:首先将16位的二进制赋值给AX寄存器,然后使用除法运算和加法运算,将千位字、百位字、十位字和个位字的ASCII码值依次计算出来,并存放在内存地址0x8000、0x8001、0x8002和0x8003
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值