实验五子程序设计
【实验目的】
掌握一般子程序的调用和返回方法,掌握定义过程的伪指令的用法。
【实验性质】
设计性实验(学时数:3H)
【实验内容】
1、完成两个四位十进制数相加的程序设计,形式为:2345+7869=10214
(1)要求所有中断调用全部采用子程序的形式完成。
(2)要求考虑进位位。完善程序并调试通过。
流程图
程序源代码:
.MODEL SMALL
.386
DATA SEGMENT
FLAG_SIGN DB 0
FLAG_NUM1 DB 0
FLAG_NUM2 DB 0
TEMP DD 0
ARRAY DD 16 DUP(0)
ERR DB 0DH,0AH,'Input error!',0DH,0AH,'$'
STRING DB 0AH,0DH,0AH,0DH,'Please Input(eg. A*B= ) $'
STRIN DB 0AH,0DH,0AH,0DH,'("q" quit):', 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
AGAIN:
LEA DX,STRING
MOV AH,9
INT 21H
LEA DX,STRIN
MOV AH,9
INT 21H
MOV EBX,OFFSET ARRAY
MOV FLAG_SIGN,0
MOV FLAG_NUM1,0
MOV FLAG_NUM2,0
L_Input0:
XOR EDX,EDX
XOR ECX,ECX
XOR EAX,EAX
MOV AH,1
INT 21H
CMP AL,'+'
JZ L_Input1
CMP AL,'-'
JNZ L_Number
NOT FLAG_SIGN
L_Input1:
MOV AH,1
INT 21H
L_Number:
CMP AL,'0'
JB L_Operator
CMP AL,'9'
JA L_Operator
SUB AL,30H
ADD EDX,EDX
MOV ECX,EDX
ADD ECX,ECX
ADD ECX,ECX
ADD EDX,ECX
MOV AH,0
ADD EDX,EAX
MOV FLAG_NUM1,1
JMP L_Input1
L_Operator:
CMP AL,'*'
JNZ L_Equal
CMP FLAG_NUM1,0
JZ ER
MOV [BX],EDX
ADD BX,4
MOV FLAG_NUM1,0
MOV FLAG_NUM2,1
JMP L_Input0
L_Equal:
MOV [BX],EDX
CMP AL,'='
JNZ L_Quit1
MOV BL,FLAG_NUM1
MOV CL,FLAG_NUM2
CMP BL,CL
JNZ ER
CMP FLAG_SIGN,0
JZ L_Cal
MOV DL,'-'
MOV
汇编子程序设计 来自淘豆网m.daumloan.com转载请标明出处.