问一道题……

白乔
博客专家认证
2003-06-17 09:00:53
试编制一个程序把BX寄存器内的二进制数用十六进制的形式显示出来!

求助,急!
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
;这样子可以了吧!!!
stack_seg SEGMENT stack
DB 128 DUP(?)
stack_seg ENDS
data_seg SEGMENT
data_seg ENDS
code_seg SEGMENT
ASSUME CS:code_seg,DS:data_seg
start:
MOV AX,data_seg
MOV DS,AX
MOV CH,4
MOV BX,0AF34H
round:
MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL SHOW
ADD AL,7
SHOW:
MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ ROUND
MOV AH,4CH
INT 21H
CODE_SEG ENDS
END START
xiaott 2003-06-21
  • 打赏
  • 举报
回复
lezi1022所言及是,本人的程序确实没有考虑ASCII码大于0A时的处理!
lezi1022 2003-06-17
  • 打赏
  • 举报
回复
xiaott,你没有考虑到如果bx=0ABCDH的时候,你的程序是有问题的!
lezi1022 2003-06-17
  • 打赏
  • 举报
回复
我也来一个!code segment
assume cs:code
start: mov bx,1234h
mov ch,4

lp1:
mov cl,4
rol bx,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,3ah
jl dis
add dl,7h
dis : mov ah,2
int 21h
dec ch
jnz lp1
mov ah,4ch
int 21h
code ends
end start

已经通过debug得到正确显示
-g
1234
Program terminated normally
-q
xiaott 2003-06-17
  • 打赏
  • 举报
回复
改了一下,执行起来比我第一个程序少8条指令,效率好一些!
data segment
buf db 4 dup(0)
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,4
xor dx,dx
mov bx,1234H ;例如BX中有二进制数0001001000110100
lop: rol bx,cl
mov dx,bx
and dx,000fh
add dx,30h
mov ah,02h
int 21h
inc ch
cmp ch,4
jb lop
mov ah,4ch
int 21h
code ends
end start
xiaott 2003-06-17
  • 打赏
  • 举报
回复
下面这是用移位的方法:
data segment
buf db 4 dup(0)
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,4
mov ax,cx
mov bx,1234H ;例如BX中有二进制数0001001000110100
lop: push cx
mov dx,bx
rol dx,cl
and dx,000fh
add dx,30h
mov ah,02h
int 21h
add cl,4
inc ch
cmp ch,4
jb lop
mov ah,4ch
int 21h
code ends
end start
也可以将BX内容除以10H并求余,然后用商再除以10H……到商为0为止!!
用户 昵称 2003-06-17
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1799/1799656.xml?temp=.8653681
Semigod 2003-06-17
  • 打赏
  • 举报
回复
很容易啊
.DATA
idx BYTE "0123456789ABCDEF"
.Code
mov cx, 4
.while cx
rol bx, 4
mov ax, bx
and ax, 0xFFF0
@ShowChar al
dec cx
.endw


xiaott 2003-06-17
  • 打赏
  • 举报
回复
说清楚一些吗?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧