永发信息网

一个关于汇编的问题

答案:1  悬赏:50  手机版
解决时间 2021-04-13 08:18
  • 提问者网友:临风不自傲
  • 2021-04-13 00:13

想要按1,2,3选择分别求A,B的和,差,积并输出,下面程序输出有问题,怎么办啊?本人是初学者,请多指教!!!

DATAS SEGMENT
MSG DB 'Input number(1~3):',0DH,0AH,'$'
A DB 9
B DB 3
TABLE DW 110,120,130;此处输入数据段代码
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET MSG ;提示输入数字
MOV AH,9
INT 21H
MOV AH,1 ;等待按键
INT 21H
AND AX,000FH ;将ASCII码转换为数字,清3XH中的3
DEC AX ;对应1、2、3分别改为0、1、2
SHL AX,1 ;每字节占2单元,用左移实现乘二
MOV BX,AX ;准备间接转移
MOV AL,A
JMP WORD PTR TABLE[BX]
ORG 110
ADD AL,B
MOV DL,AL
MOV AH,2
INT 21H
JMP DISP
ORG 120
SUB AL,B
MOV DL,AL
MOV AH,2
INT 21H
JMP DISP
ORG 130
MUL B
MOV DL,AL
MOV AH,2
INT 21H
JMP DISP
DISP:MOV AH,4CH
INT 21H
CODES ENDS
END START


最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-04-13 00:25

你这段程序是不能正确输出结果的。


MOV AH,2
INT 21H


的作用是屏幕输出这点没错,可是同时你忽略了一点,输出的DL是ASCII字符码!


所以你需要先把结果做二进制-十进制转换,然后变成ASCII码字符串,才能得到正确的结果,至于怎么进行转换你可以在网上搜一下。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯