永发信息网

把BX中的1 的个数放到AL 中,并在屏幕中显示1的个数.

答案:1  悬赏:40  手机版
解决时间 2021-11-07 12:26
  • 提问者网友:雪舞兮
  • 2021-11-07 07:21
把BX中的1 的个数放到AL 中,并在屏幕中显示1的个数.
最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-11-07 08:28
mov bx,1234 给bx置数
xor al,al 清al
mov cx,10h 移位循环次数(16次)
ST: mov dx,01h 屏蔽高于最低位的值
and dx,bx 取每次右移最低位
add al,dl 把值统计入al里
shr bx,01 右移一位
dec cx 循环变量减一
test cx,cx 检测循环是否结束
jne ST 未结束就跳
mov ah,02h 置dos中断功能(输出字符)
cmp al,0ah 如果多于10个1,需要显示两个字符
jl OCT1 小于就跳
mov dl,31h 先显示1个"1"作为十位
push ax 保存al的结果
int 21h 中断显示
pop ax 回复al的结果
sub al,0ah 求个位
OCT1:
mov dl,al
add dl,30h 计算个位的ascii
int 21h 显示
int 20h 结束

在debug中测试通过,下面是测试BX为0xFADC时的运行结果:

-u fd
1411:00FD BBDCFA MOV BX,FADC
1411:0100 30C0 XOR AL,AL
1411:0102 B91000 MOV CX,0010
1411:0105 BA0100 MOV DX,0001
1411:0108 21DA AND DX,BX
1411:010A 00D0 ADD AL,DL
1411:010C 49 DEC CX
1411:010D D1EB SHR BX,1
1411:010F 85C9 TEST CX,CX
1411:0111 75F2 JNZ 0105
1411:0113 B402 MOV AH,02
1411:0115 3C0A CMP AL,0A
1411:0117 7C08 JL 0121
1411:0119 B231 MOV DL,31
1411:011B 50 PUSH AX
1411:011C CD21 INT 21
-g
11
Program terminated normally
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯