CODE ENDS END START
2) 实验步骤:
(1)建立源程序文件。
(2)用MASM宏汇编程序和LINK连接程序生成执行程序。 (3)运行执行程序,输入不同的加数和被加数,观察结果。
2、十进制加法和算式显示程序(自行设计) 1)程序设计要求
在以上十进制数加法要求的基础上,将加法算式及和在显示器上显示。
如ADDOP1中存放1234H,在ADDOP2中存放6789H,执行程序后显示器上显示: 1234+6789=8023 2) 实验步骤:
(1)建立源程序文件。 DSEG SEGMENT ADDOP1 DD 1234 JIAHAO DB '+','$' DENGHAO DB '=','$' ten dw 10 SUM DD ? DSEG ENDS
ESEG SEGMENT ADDOP2 DD 6789 ESEG ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
31
CODE SEGMENT ASSUME DS:DSEG,CS:CODE,ES:ESEG START: MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX MOV AX,WORD PTR ADDOP1 ADD AX,WORD PTR ADDOP2 MOV WORD PTR SUM,AX MOV AX,WORD PTR ADDOP1+2 ADC AX,WORD PTR ADDOP2+2 MOV WORD PTR SUM+2,AX MOV BX,WORD PTR ADDOP1+2 CALL DISPLAY MOV BX,WORD PTR ADDOP1 CALL DISPLAY MOV AH,09H MOV DX,OFFSET JIAHAO INT 21H MOV BX,WORD PTR ADDOP2+2 CALL DISPLAY MOV BX,WORD PTR ADDOP2 CALL DISPLAY MOV AH,09H MOV DX,OFFSET DENGHAO INT 21H MOV BX,WORD PTR SUM+2 CALL DISPLAY MOV BX,WORD PTR SUM CALL DISPLAY MOV AH,4CH INT 21H
DISPLAY PROC NEAR MOV CX,10000D ;DIVIDE BY 10000 CALL DEC_DIV MOV CX,1000D ;DIVIDE BY 1000 CALL DEC_DIV MOV CX,100D ;DIVIDE BY 100
32
CALL DEC_DIV MOV CX,10D ;DIVIDE BY 10 CALL DEC_DIV MOV CX,1D ;DIVIDE BY 1 CALL DEC_DIV RET ;RETURN FROM BINIDEC
DEC_DIV PROC NEAR ; ;--------从 位取出数字显示 MOV AX,BX ;NUMBER LOW HALF MOV DX,0 ;ZERO OUT HIGH HALF DIV CX ;DIVIDE BY CX MOV BX,DX ;REMAINDER INTO BX MOV DL,AL ;QUOTIENT INTO DL ;PRINT THE CONTENTS OF DL ON SCREEN ADD DL,30H ;CONVERT TO ASCII MOV AH,2H ; DISPLAY FUNCTION INT 21H ;CALL DOS RET ;RETURN FROM DEC_DIV DEC_DIV ENDP
;;------------------------------------------------------------------ DISPLAY ENDP
CODE ENDS END START
(2)用MASM宏汇编程序和LINK连接程序生成执行程序。 (3)运行执行程序,输入不同的加数和被加数,观察结果。
3、键盘输入加数和被加数进行十进制数加法,显示结果程序(自行设计) 1)程序设计要求
33
采用DOS的键盘功能调用和显示功能调用,将键盘输入的4位十进制被加数和4位加数相加,和存入有关内存单元,并将算式及和显示在显示器上。 要求采用子程序的设计方法设计程序,例如设计一个从键盘读入输入数据的子程序和将数据显示的子程序。
DSEG SEGMENT ADDOP DW 2 DUP(?) ADDOP1 DD ? JIAHAO DB '+','$' DENGHAO DB '=','$' TEN DW 10 SUM DD ?
GO DB 'PLEASE INPUT TWO NUMBER: $' GOO DB 'THE SUM IS: $'
TISHI DB 'THE NUMBER YOU INPUT IS NOT RIGHT,MUST <10000,PLEASE INPUT AGAIN! $'
DSEG ENDS
ESEG SEGMENT ADDOP2 DD ? ESEG ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT ASSUME DS:DSEG,CS:CODE,ES:ESEG START: MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX TS: MOV SI,0 MOV CX,2 ; 循环5次 LEA DX, GO ; PRINT GO MOV AH, 09 INT 21H AGAIN: PUSH CX CALL INPUT CMP AX,10000 JL RIGHT POP CX CALL CRLF MOV DX,OFFSET TISHI
34
MOV AH,09H INT 21H CALL CRLF JMP TS
RIGHT: MOV ADDOP[SI],AX ;ADD SUM,AX INC SI INC SI POP CX LOOP AGAIN CALL CRLF LEA DX, GOO ; PRINT GOO MOV AH, 09 INT 21H MOV SI,0 MOV BX,ADDOP[SI] MOV WORD PTR ADDOP1,BX MOV WORD PTR ADDOP1+2,0 INC SI INC SI MOV BX,ADDOP[SI] MOV WORD PTR ADDOP2,BX MOV WORD PTR ADDOP2+2,0 PUSH AX MOV AX,WORD PTR ADDOP1 ADD AX,WORD PTR ADDOP2 MOV WORD PTR SUM,AX MOV AX,WORD PTR ADDOP1+2 ADC AX,WORD PTR ADDOP2+2 MOV WORD PTR SUM+2,AX POP AX ;显示算式 MOV BX,WORD PTR ADDOP1+2 CALL DISPLAY MOV BX,WORD PTR ADDOP1 CALL DISPLAY MOV AH,09H MOV DX,OFFSET JIAHAO INT 21H MOV BX,WORD PTR ADDOP2+2
35
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库东华微机实验aaa(7)在线全文阅读。
相关推荐: