编写一个程序,统计寄存器AX中二进制位“1”的个数,结果以一位十六进制数形式显示到屏幕上。 这是题目,要求用汇编语言程序编写,哪位大虾伸出你的手帮帮小弟啊,不胜感激!!!
答案:2 悬赏:70 手机版
解决时间 2021-05-20 02:08
- 提问者网友:沦陷
- 2021-05-19 14:31
急求答案,要详细的程序,非诚勿扰,谢谢!!!
最佳答案
- 五星知识达人网友:玩家
- 2021-05-19 15:02
assume cs:code
code segment
start:
mov ax, 1234
mov cx, 16
xor bx, bx
next:
rol ax, 1
test ax, 1
jz zero
inc bx
zero:
loop next
cmp bx, 9
jg hex
or bl, 30h
mov dl, bl
jmp output
hex:
sub bx, 10
add bx, 'A'
mov dl, bl
output:
mov ah, 2
int 21h
mov ax, 4c00h
int 21h
code ends
end start
code segment
start:
mov ax, 1234
mov cx, 16
xor bx, bx
next:
rol ax, 1
test ax, 1
jz zero
inc bx
zero:
loop next
cmp bx, 9
jg hex
or bl, 30h
mov dl, bl
jmp output
hex:
sub bx, 10
add bx, 'A'
mov dl, bl
output:
mov ah, 2
int 21h
mov ax, 4c00h
int 21h
code ends
end start
全部回答
- 1楼网友:渡鹤影
- 2021-05-19 15:39
assume cs:code code segment
onenum: ;数1的个数存在DX中 mov dx,0 mov cx,16 nextbit: ror ax,1 ;最右位移入CF jnc bitzero inc dx bitzero: loop nextbit ;转16进制 add dx,'0' ;变成ASCII cmp dx,'9' jbe jbe10 ;小于等于9,不需要特殊处理了 add dx,'A'-'0'-0ah ;不是数字的,重新计算 jbe10: ;输出结果 mov ah,2 ;功能号2,输出字符 int 21h ;DOS功能调用 mov ax, 4c00h ;功能号4c,程序结束。al=0表示成功。 int 21h ;DOS功能调用
code ends end onenum
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯