布我晚悦 实验二两个多位十进制数相加的程序 程序理解介绍 1.加数与被加数均以 ASCII码形式存在内存中,在进行运算之前,先 转换为十六进制数的形式(只要减去3H即可) 2.多位数的加法要用带进位的加法指令ADC,并且在首次相加之前要 注意先清进位位 3.因为是非组合的BCD码(或AsC码)的运算,所以用十进制调整指 令AAA对运算结果加以修正。 4.运算结果在送显示之前应转换为用ASC码表示的数字串(加上3 即可) 5.在屏幕上显示结果可利用NT21H的02号子功能,因该功能一次只 能显示一个字符,故对于显示数字串来说,要编写一段显示子程序,反 复使用02H号子功能 6.加数与被加数为5位,而和可能为5位或6位,即考虑到带进位和不 带进位的情况。在显示和数时最好按实际情况显示,而不要出现0。 电子工程学院
实验二 两个多位十进制数相加的程序 三.程序理解介绍 1.加数与被加数均以ASCII码形式存在内存中,在进行运算之前,先 转换为十六进制数的形式(只要减去30H即可)。 2.多位数的加法要用带进位的加法指令ADC,并且在首次相加之前要 注意先清进位位。 3.因为是非组合的BCD码(或ASCII码)的运算,所以用十进制调整指 令AAA对运算结果加以修正。 4.运算结果在送显示之前应转换为用ASCII码表示的数字串( 加上30H 即可)。 5.在屏幕上显示结果可利用INT 21H的02号子功能,因该功能一次只 能显示一个字符,故对于显示数字串来说,要编写一段显示子程序,反 复使用02H号子功能。 6.加数与被加数为5位,而和可能为5位或6位,即考虑到带进位和不 带进位的情况。在显示和数时最好按实际情况显示,而不要出现0
布我晚悦 实验二两个多位十进制数相加的程序 四.实验程序 DISX MACRO X MoⅴDL,X MOV AH. 02H INT 21H ENDM DATA SEGMENT MESS DB TWO MULBIT DECIMAL NUMBERS ADD ODH OAH DB ODH, OAH, S DATAl DB 33H 39H 31H. 37H 34H DATA2 DB 36H. 35. 30H 38H. 32H DATA3 DB 6 DUP (?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS 电子工程学院
实验二 两个多位十进制数相加的程序 四.实验程序 DISX MACRO X MOV DL,X MOV AH,02H INT 21H ENDM DATA SEGMENT MESS DB 'TWO MULBIT DECIMAL NUMBERS ADD',0DH,0AH DB 0DH,0AH,'$' DATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H DATA3 DB 6 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS
布我晚悦 实验二两个多位十进制数相加的程序 CODE SEGMENT CALL ADDA ASSUME CS CODE, DS DATA SS STACK ES: DATA DISX 3DH START:MOⅴAx,DATA MOV SI, OFFSET DATA3 MOV DS. AX MOV BX. 05 MOV AX STACK CALL DISPL Mov SS. AX DISX ODH MOV AX. TOP DISX OAHI Mov SP AX MOV AH. 4CH MOV DX, OFFSET MESS INT 21H MOV AH. 09H INT 21H MOV SI OFFSET DATAl DISPL PROC NEAR DS1: DISX [SI+BX-1] MOV BX. 05 DEC BX CALL DISPL JNZ DSl DISX 2BH RET MoⅴSI, OFFSET DATA2 DISPL ENDP MOV BX. 05 CALL DISPL MOV SI OFFSET DATAl MOV DI, OFFSET DATA2 电子工程学院
实验二 两个多位十进制数相加的程序 CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV DX,OFFSET MESS MOV AH,09H INT 21H MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL DISX 2BH MOV SI,OFFSET DATA2 MOV BX,05 CALL DISPL MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL ADDA DISX 3DH MOV SI,OFFSET DATA3 MOV BX,05 CALL DISPL DISX 0DH DISX 0AH MOV AH,4CH INT 21H DISPL PROC NEAR DS1: DISX [SI+BX-1] DEC BX JNZ DS1 RET DISPL ENDP
布我晚悦 实验二两个多位十进制数相加的程序 ADDA PROC NEAR INC SI MOV DX. SI INC DI Mov BP. DI INC BX MOV BX. 05 AD1: SUB BYTE PTR [SI+BX-1, 30H LOOP AD2 MOV SI, OFFSET DATA3 SUB BYTE PTR [DI+BX-1, 30H DEC BX MOV BX. 05 AD3: ADD BYTE PTR [SI+BX-1, 30H JNZ ADl MOV CX. 05 DEC BX CLC JNZ AD3 RET MOV BX OFFSET DATA3 ADDA ENDP AD2: MOV AL, LSI] MOV AH, [DI] CODE ENDS ADC AL. AH END START AAA MOV [BX], AL 电子工程学院
实验二 两个多位十进制数相加的程序 ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H DEC BX JNZ AD1 MOV CX,05 CLC MOV BX,OFFSET DATA3 AD2: MOV AL,[SI] MOV AH,[DI] ADC AL,AH AAA MOV [BX],AL INC SI INC DI INC BX LOOP AD2 MOV SI,OFFSET DATA3 MOV BX,05 AD3: ADD BYTE PTR [SI+BX-1],30H DEC BX JNZ AD3 RET ADDA ENDP CODE ENDS END START
布我晚悦 实验二两个多位十进制数相加的程序 五.实验要求 先完成不考虑最高位相加产生进位的程序的调试, 然后改写程序完成考虑进位相加,并能正常显示的程序。 47193 +68056 115249 电子工程学院
实验二 两个多位十进制数相加的程序 五.实验要求 先完成不考虑最高位相加产生进位的程序的调试, 然后改写程序完成考虑进位相加,并能正常显示的程序。 4 7 1 9 3 +6 8 0 5 6 1 1 5 2 4 9