微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇编emu8086-如何打印两个加号?

如何解决汇编emu8086-如何打印两个加号?

我正在尝试打印输入的2位数字,但是在打印时遇到了麻烦。这是我的进度:

DATA SEGMENT
MSG1 DB "ENTER NUMBER : $"
DIGIT1 DB ?
DIGIT2 DB ?
BCD DB ?
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT1,AL

MOV AH,30H
MOV DIGIT2,DIGIT1
MOV AL,DIGIT2

MOV CL,4
ROL AH,CL

ADD AL,AH
MOV BCD,AL
MOV AH,1
INT 21H

CODE ENDS

END START

我的代码可以接受2位数字的输入,但是不能打印输入的2位数字,并且可以打印Enter Number:

enter image description here

解决方法

您的程序通过2个输入成功创建了打包的BCD
要将结果打印回屏幕,您首先要拆开组合在一起的内容,然后将数字转换为DOS可以输出的字符。

; Display the tens:
mov dl,BCD
mov cl,4
shr dl,cl  ; Moves the "tens" from high nibble to low nibble,throwing out the "ones"
or  dl,'0' ; Converts from digit value [0,9] to digit character ['0'-'9']; adds 48
mov ah,02h ; DOS.PrintCharacter
int 21h
; Display the ones:
mov dl,BCD
and dl,15  ; Only keeps the "ones"
or  dl,9] to digit character ['0','9']; adds 48
mov ah,02h ; DOS.PrintCharacter
int 21h

我的代码可以接受2位数字的输入,但是不能打印输入的2位数字,并且它可以打印输入数字:

您发布的MOV AH,1 INT 21H代码无法产生此输出!也许您在产生屏幕截图的代码中写了mov ah,9

截图也缺少“ R”和“:”之间的空格字符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。