|
匯編作業:- DATA SEGMENT
- KEYBUFFER DB 100
- DB ?
- DB 100 DUP(?)
- TEMP DW ?
- ADD1 DB 100 DUP(?)
- ADD2 DB 100 DUP(?)
- SUM DB 100 DUP(?)
- STRING1 DB 'Please input a decimal data:
- [1] 從鍵盤輸入兩個十進制數(如12678532與21736543),以二進制數形式存放在ADD1和ADD2為首址的存貯器單元,輸入一個十進制數采用子程序形式。
- [2] 和以二進制數的形式存入SUM以下單元。
- [3] 將和送到屏幕顯示采用子程序形式。
- STRING2 DB 'The sum of two datas is:
- [1] 從鍵盤輸入兩個十進制數(如12678532與21736543),以二進制數形式存放在ADD1和ADD2為首址的存貯器單元,輸入一個十進制數采用子程序形式。
- [2] 和以二進制數的形式存入SUM以下單元。
- [3] 將和送到屏幕顯示采用子程序形式。
- DATA ENDS
- STACK SEGMENT STACK 'STACK'
- DW 100H DUP(?)
- TOP LABEL WORD
- STACK ENDS
- CODE SEGMENT
- ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
- START:
- MOV AX, DATA
- MOV DS,AX
- MOV ES,AX
- MOV AX,STACK
- MOV SS,AX
- LEA SP,TOP
- CALL INPUT ;輸入十進制數
- CALL DISPCR
- LEA SI,KEYBUFFER
- CALL TRANS10TO32
- MOV WORD PTR ADD1+2,DX ;低位在前高位在后
- MOV WORD PTR ADD1,AX
- CALL INPUT ;輸入十進制數
- CALL DISPCR
- LEA SI,KEYBUFFER
- CALL TRANS10TO32 ;將緩存區中ASCII碼轉換成32位二進制數
- MOV WORD PTR ADD2+2,DX ;低位在前高位在后
- MOV WORD PTR ADD2,AX
- LEA SI,ADD1
- LEA DI,ADD2
- MOV AX,[SI]
- MOV BX,[DI]
- ADD AX,BX ;低位相加
- MOV WORD PTR SUM,AX
- MOV AX,[SI+2]
- MOV BX,[DI+2]
- ADC AX,BX ;高位與低位進位相加
- MOV WORD PTR SUM+2,AX
- PUSH AX
- PUSH DX
- LEA DX,STRING2 ;顯示輸出提示字符串
- MOV AH,09H
- INT 21H
- POP DX
- POP AX
- CALL DISPAXD
- MOV AX,WORD PTR SUM
- CALL DISPAXD
- MOV AH,4CH
- INT 21H
- DISPAXD PROC NEAR
- ;功能:將AX中的內容輸出為十進制
- ;入口參數:AX,DI(緩沖區地址)
- ;出口參數:無
- PUSH AX
- PUSH CX
- PUSH DX
- PUSH DI
- LEA DI,KEYBUFFER
- MOV CX,5
- CALL TRANS16TO10 ;將16進制轉化為十進制
- LEA DI,KEYBUFFER+4
- L2:
- MOV DL,[DI]
- ADD DL,30H
- MOV AH,02H ;顯示
- INT 21H
- DEC DI ;從后往前輸出顯示
- LOOP L2
- POP DI
- POP DX
- POP CX
- POP AX
- RET
- DISPAXD ENDP
- TRANS16TO10 PROC NEAR
- ;功能:將AX中的二進制數轉化為十進制
- ;入口參數:AX,DI(緩沖區地址)
- ;出口參數:緩沖區內容
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- PUSH DI
- MOV BX,10
- MOV CX,5 ;循環五次
- L1:
- XOR DX,DX
- DIV BX
- MOV [DI],DL
- INC DI
- LOOP L1
- POP DI
- POP DX
- POP CX
- POP BX
- POP AX
- RET
- TRANS16TO10 ENDP
- INPUT PROC NEAR
- ;入口參數:DX(緩沖區首地址)
- ;出口參數:緩存區內容
- LEA DX,STRING1 ;顯示輸入提示字符串
- MOV AH,09H
- INT 21H
- LEA DX,KEYBUFFER
- MOV AH,0AH
- INT 21H
- RET
- INPUT ENDP
- TRANS10TO32 PROC NEAR
- ;將緩沖區中以ASCII碼表示的十進制數轉換成32位二進制數
- ;入口參數:SI(緩沖區首地址)
- ;出口參數:DX:AX(變換結果)
- XOR AX,AX
- XOR CX,CX
- MOV CL,[SI+1]
- ADD SI,2
- MOV AL,[SI]
- INC SI
- SUB AL,30H
- DEC CX
- JCXZ TRANSF_OK
- TRANSF1:
- MOV BX,DX
- LEA DI,TEMP
- MOV [DI],WORD PTR 000AH
- MUL WORD PTR [DI]
- PUSH AX
- PUSH DX
- MOV AX,BX
- MUL WORD PTR [DI]
- PUSH AX
- POP DX
- POP BX
- ADD DX,BX
- POP AX
- XOR BX,BX
- MOV BL,[SI]
- INC SI
- SUB BL,30H
- ADD AX,BX
- ADC DX,0
- LOOP TRANSF1
- TRANSF_OK:
- RET
- TRANS10TO32 ENDP
- DISPCR PROC NEAR
- PUSH AX
- PUSH DX
- MOV AH,2
- MOV DL,0AH
- INT 21H
- MOV AH,2
- MOV DL,0DH
- INT 21H
- POP DX
- POP AX
- RET
- DISPCR ENDP
- CODE ENDS
復制代碼
[1] 從鍵盤輸入兩個十進制數(如12678532與21736543),以二進制數形式存放在ADD1和ADD2為首址的存貯器單元,輸入一個十進制數采用子程序形式。
[2] 和以二進制數的形式存入SUM以下單元。
[3] 將和送到屏幕顯示采用子程序形式。
|
-
匯編1.png
(13.57 KB, 下載次數: 141)
下載附件
2017-12-18 21:13 上傳
1
-
-
1.doc
2017-12-18 21:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
49 KB, 下載次數: 4, 下載積分: 黑幣 -5
代碼和程序
-
-
1.zip
2017-12-18 21:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.25 KB, 下載次數: 5, 下載積分: 黑幣 -5
asm文件
|