试用汇编语言编写一个程序,把存放在BX寄存器内的值(二进制数)用十六进制数的形式在屏幕上显示出来。

 我来答
万世流香
推荐于2017-12-15 · TA获得超过430个赞
知道答主
回答量:195
采纳率:0%
帮助的人:219万
展开全部
DATA SEGMENT
STR DB 'H',0AH,0DH,'$'
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,1111110111100001B
MOV CH,4 ;循环四次
LOP: MOV CL,4
ROL BX,CL ;每次循环环左移四位
MOV DX,BX
AND DL,0FH ;每次取低四位,来表示一个十六进数
ADD DL,30H ;转化成为ASSIC码
CMP DL,3AH ;判断DL是否大于10的ASSIC码(A+30H)
JB NEXT
ADD DL,7 ;大于10再加上7
NEXT: MOV AH,2
INT 21H
DEC CH
JNZ LOP
MOV DX,OFFSET STR
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
百度网友9045b38
2010-11-18 · TA获得超过1972个赞
知道小有建树答主
回答量:984
采纳率:90%
帮助的人:555万
展开全部
;怎么你们问的都是相同的一些问题?
;16进制数输出,用MASM5.0编译通过

data segment
s1 db 4 DUP(0)
S2 db '$'

data ends
code segment
assume cs:code, ds:data
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
;-------------------------

MOV BX,0E78BH ;这里可改成任意16进制数

MOV DI,OFFSET S2

MOV CH,4
NEXT:
PUSH BX
CALL CZR
DEC DI
MOV [DI],BL
POP BX
MOV CL,4
SHR BX,CL
DEC CH
JNZ NEXT

MOV AH,09 ;
MOV DX,OFFSET S1
INT 21H

RET
MAIN ENDP
;----------------------
CZR PROC NEAR

AND BX,0FH
CMP BL,9
JG IS_AF
ADD BL,30H
JMP N1
IS_AF:
ADD BL,40H-9
N1:

RET
CZR ENDP
;-----------------------

code ends
end main
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式