?? hw10-2.asm
字號:
TITLE DECIMAL TO BINARY
DATA SEGMENT
P1 DB 'Input DECIMAL(5): $' ;提示信息
BIN16 DW ?
DEC5 DB 5 DUP(0) ;轉換后的十進制數
CONST DW 10000,1000,100,10,1
COUNT EQU 5
P2 DB 0AH,0DH,'The Result is: $'
BINASC DB 0AH,0DH,16 DUP(0),'$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK1,DS:DATA
MAIN: MOV AX,DATA
MOV DS,AX
MOV CH,5 ;設置十進制ASCII碼的輸入個數
XOR BX,BX ;將BX寄存器清零
LEA DI,DEC5 ;取轉換后的十進制首址
LEA DX,P1 ;顯示提示信息
MOV AH,09H
INT 21H
LOP1: MOV AH,01H ;DOS系統功能調用,從鍵盤輸入數字
INT 21H
CMP AL,'0' ;若輸入的數字小于‘0’,則重新輸入
JB LOP1
CMP AL,'9' ;若輸入的數字大于‘9’,則重輸
JA LOP1
SUB AL,30H ;轉換成十進制數數字
MOV [DI],AL ;保存轉換后的十進制數
INC DI
DEC CH ;輸入字符滿5個了嗎?若沒有,請繼續
JNZ LOP1
CALL DECtoBIN ;調用函數
LEA DI,BINASC
CALL BINtoASC ;調用函數
LEA DX,P2
MOV AH,09H
INT 21H
LEA DX,BINASC
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
DECtoBIN PROC
XOR AX,AX
LEA DI,DEC5
LEA SI,CONST
MOV CH,COUNT
LOP2: MOV CL,[DI]
CMP CL,0
JE NEXT1
LOP3: ADD AX,[SI]
DEC CL
JNE LOP3
NEXT1: INC DI
INC SI
INC SI
DEC CH
JNE LOP2
MOV BIN16,AX
RET
DECtoBIN ENDP
BINtoASC PROC
MOV CX,16
LOP4: ROL AX,1
MOV BL,AL
AND BL,01H
OR BL,30H
MOV [DI],BL
INC DI
LOOP LOP4
RET
BINtoASC ENDP
MOV AH,4CH
INT 21H
CODE ENDS
END MAIN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -