1. 编写综合程序,构成子程序表,实现10->16,16->10,2->10进制转换以及乘除法运算。
代码如下:
STACK SEGMENT PARA STACK
DW 100H DUP(?)
STACK ENDS
DATA SEGMENT PARA
STR1 DB 'Please input a decimal number(10->16):',0ah,0dh,'$'
STR2 DB 'Please input a binary number(2->10):',0ah,0dh,'$'
STR3 DB 'Please input a hexadecimal number(16->10):',0ah,0dh,'$'
STR4 DB 'Quotient:','$'
STR5 DB 'Remainder:','$'
VALUE DB 128 DUP(?)
NEW_LINE DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV DX,OFFSET STR1 ;输入一个十进制数
MOV AH,9
INT 21H
MOV CX,5
CALL INPUT_10
MOV BX, 16 ;16进制,要除16
MOV CX, 4 ;求4位16进制数.
CALL CV10_16
PUSH AX
CALL ENTER_1
MOV DX,OFFSET STR2 ;输入一个二进制数
MOV AH,9
INT 21H
MOV CX,16
CALL INPUT_2
CALL ENTER_1
MOV BX, 10 ;10进制,要除10
MOV CX, 5 ;求5位10进制数.
CALL CV2_10
PUSH AX
CALL ENTER_1
MOV DX,OFFSET STR3 ;输入一个十六进制数
MOV AH,9
INT 21H
MOV CX,4
CALL INPUT_16
CALL ENTER_1
MOV BX, 10 ;10进制,要除10
MOV CX, 5 ;求5位10进制数.
CALL CV2_10
CALL ENTER_1
POP BX
POP AX
CALL DIV1_2
CALL ENTER_1
CALL MULT
MOV AH,4CH
INT 21H
MAIN ENDP
;输出回车
ENTER_1 PROC
PUSH AX
PUSH DX
MOV DX,OFFSET NEW_LINE ;显示回车
MOV AH,9
INT 21H
POP DX
POP AX
RET
ENTER_1 ENDP
INPUT_10 PROC
PUSH SI
PUSH DX
PUSH BX
MOV SI,0
MOV BX,10
LP1: MOV AH,1
INT 21H
CMP AL,0DH
JE RETURN
CMP AL,30