求助汇编语言编程题!

3、键盘输入加数和被加数进行十进制数加法,显示结果程序(自行设计)
1)程序设计要求
将数据段DSEG中的ADDOP1定义的双字变量的4位十进制数和附加段ESEG中的ADDOP2定义的双字变量的4位十进制数相加,和存放于数据段DSEG中的SUM中
采用DOS的键盘功能调用和显示功能调用,将键盘输入的4位十进制被加数和4位加数相加,和存入有关内存单元,并将算式及和显示在显示器上。
要求采用子程序的设计方法设计程序,例如设计一个从键盘读入输入数据的子程序和将数据显示的子程序。

;================================================
ASSUME CS:CODE, DS:DATA

DATA SEGMENT
MSG1 DB 13, 10, 'Please input x : $'
MSG2 DB 13, 10, 'Please input y : $'
MSG3 DB 13, 10, 'x + y = $'
NNNN DW ?
DATA ENDS
;----------------------------------
CODE SEGMENT

START:
MOV AX, DATA
MOV DS, AX
;-----------------------
LEA DX, MSG1
MOV AH, 9
INT 21H
CALL INPUT
MOV NNNN, CX

LEA DX, MSG2
MOV AH, 9
INT 21H
CALL INPUT
ADD CX, NNNN

LEA DX, MSG3
MOV AH, 9
INT 21H

MOV AX, CX
CALL OUTPUT
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;----------------------------------
INPUT:
MOV BL, 10
MOV CX, 0
IN_X:
MOV AH, 7
INT 21H
CMP AL, 13
JE IN_END
CMP AL, '0'
JB IN_X
CMP AL, '9'
JA IN_X
MOV DL, AL
MOV AH, 2
INT 21H
MOV AL, DL
SUB AL, 30H
MOV AH, 0
XCHG AX, CX
MUL BL
ADD CX, AX
CMP CH, 0
JNZ IN_END
JMP IN_X
IN_END:
RET
;----------------------------------
OUTPUT:
MOV BX, 10
MOV CX, 0
OL1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNZ OL1
MOV AH, 2
OL2:POP DX
INT 21H
LOOP OL2
RET
;----------------------------------
CODE ENDS
END START
;================================================
温馨提示:内容为网友见解,仅供参考
无其他回答

汇编语言编程的问题。
1. JMP BX ; 如果(BX)=1020H,那么(IP)=1020H,因为此种形式为通过寄存器的段内间接转移,执行时将把寄存器的内容直接送IP,所以执行此指令后IP的值为1020H 2. JMP TAB[BX][SI];如果(DS)=2000H,(BX)=1020H,(SI)=0002H,TAB=0010H,(21032H)1234H,那么(IP)=1234H。此种形式为...

关于汇编语言的问题,我们学习单片机的汇编语言,但是有些语言的意思不...
1、MOV R0,#20HLOOP:MOV A,R0MOV @R0,AINC R0CJNE R0,#50H,LOOP2、ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0SETB ET0SETB EAMOV R2,#5SJMP $T0ISR:CLR TR0MOV TH0,#HIGH(65536-50000)M...

一道汇编语言题跪求解答,困扰好几天了
1、lea 和 mov 都可以取变量的偏移地址,只是mov语句需要加 offset 前缀;2、图片程序确实啰唆,完全可以直接 “mov ax, x” 将8100h 传送给 ax 。程序中的问题:很显然,x、y 两个数都是负数,直接相加产生溢出;如果当无符号数计算,也会溢出,所以这样的运算,在相加之前,就应先将字扩展成...

汇编语言程序设计题目
一、改错(只能对每条错误指令的一个操作数进行修改)。(共10分,每小题1分)1. MOVBX,AL改正: MOV BX,BX 2. MOV AX, A999H 改正:MOV AX,0A999H 3. MOV AL, 1234改正:MOV AX,1234 4. MOVAX, [CX] 改正:MOV AX,[BX]5. MOVDS, 1000H 改正:MOV AX,1000H ...

几个汇编语言问题.高手帮忙解答下..
用串指令编写程序段分别完成以下功能:1.从左到右把S1中的字符串传送到S2.LEA SI,S1 LEA DI,S2 MOV CX,S2-S1 CLD REP MOVSB 2.从右到左把S1中的字符串传送到S2.MOV CX,S2-S1 LEA SI,S1+11 LEA DI,S2+11 STD REP MOVSB 3.把S1中的第3和第4个字节装入AX.MOV AL,S1+2 MOV AH,S1...

ARM汇编语言简单编程问题
1.用ARM汇编指令实现的C赋值语句:x=(a+b)-c,在进行运算之前,代码必须先把a、b、c的值装入到寄存器,运算结束后,还要把x的值存回存储器中。2用ARM汇编指令实现的C语句:z=(a<<2)|(b&15)。3在ARM汇编指令中实现下面条件转移语句:if(a...

汇编语言程序设计习题解答
1、设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有几种:解答:根据操作数地址码为6位,则二地址指令中操作码的位数为16 – 6 – 6 = 4。这4位操作码可有24=16种操作。由于操作码固定,则除去了零地址指令P种,一地址指令Q种,剩下二地址指令最多有16 – P – ...

汇编语言的问题
如果(DS)=3000H,(SI)=2000H,COUNT=3000H 则物理地址=30000+2000+3000=35000H---对。MOV AX,COUNT[SI]---AL = [35000H], AH = [35000H + 1]执行结果是(AX)=1234H--不能肯定。因为题目并没有给定 [35000H] 和 [35000H + 1] 中的内容。

几个汇编语言的问题
1.MOV CL,20H[BX][SI];结果(CL)=(DS:[BX+SI+20H])=(091DH:0056H)=(09226H)=0F6H 2.MOV [BP][DI],CX];结果是将CX的值5678H存入内存(SS:[BP+DI])=(1E4AH:0056H)=(1E4F6H)中,即结果是(1E4F6H)=5678H 3.LEA BX,20H[BX][SI]);结果是将内存偏移地址[BX+SI+20H]=...

谁有汇编语言的试题???
一、 选择题 1. 有一个翻译程序,它能把汇编语言编写的源程序翻译成CPU能识别的机器语言,这个编译程序被称为(汇编)程序。2. 字符‘A’的ASCII码值为(41H)。3. MOV AX[BP]指令隐含的段是(SS)。4. (ADD AX,1234H)的指令是立即寻址方式。5. 指令STC是将进位位(置1)。6. AX...

相似回答