试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端显示与它等值的二进制数。

请各位大神帮我看一下,下面的代码有什么错误,有错误的帮我指出来,谢谢了。DATASSEGMENTMSG1db'请输入4个十六进制数:',13,10,'$'MSG2db'对... 请各位大神帮我看一下,下面的代码有什么错误,有错误的帮我指出来,谢谢了。
DATAS SEGMENT MSG1 db '请输入4个十六进制数:',13,10,'$' MSG2 db '对应的2进制数是:',13,10,'$' NUM db ?DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AXPrompt1: ;显示提示信息:请输入4个十六位进制数 mov ah,9 mov dx,seg MSG1 mov ds,dx lea dx,MSG1 int 21h begin: mov bx,0 mov ch,4 ;循环的次数input: ;输入 mov ah,1 int 21h cmp al,30h ;判断是否<0 jb input ;<0返回输入 cmp al,39h ;判断是否>9 ja af ;大于则跳转至af and al,0fh ;转换为:0000B~1001B jmp binary af: ;判断是否是A—F的数 cmp al,41h ;又<A吗? jb input ;不是‘AF’的数重新输入 cmp al,46h ;>F吗? ja _af and al,0fh ;转换为:1010B~1111B add al,9 _af: ;判断时候是a-f的数 cmp al,61h jb input cmp al,66h ja input and al,0fh add al,9 binary : or bl,al ;将键盘输入的数进行组合 dec ch jnz inputdispn : mov cx,16 ;将16位二进制数一位位地转换成ADCII码显示Prompt2: ;提示信息 mov ah,9 mov dx,seg MSG2 mov ds,dx lea dx,MSG2 int 21hdisp : ;显示二进制数 mov dl,0 rol bx,1 rcl dl,1 or dl,30h mov ah,2 ;进行显示 int 21h loop dispstop : ret MOV AH,4CH INT 21HCODES ENDS END START
展开
 我来答
做而论道
高能答主

2013-12-23 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式