📄 assemb2.asm
字号:
;输入两个字符,输出其10进制,二进制,16进制的表示. 40405010415
;Test for MUL operater
;THE PROCEDUE TO_BIN,PRINT_BIN,PRINT_HEX,PRINT_DEC,COUNT
;TO_BIN:CONVERT ASCII VALUE TO BINARY VALUE. THE VALUE IS STORED IN BINARY_VALUE
DATA SEGMENT
ASCII_VALUE DB 6,0,6 DUP(?)
BINARY_VALUE DW ?
COUNT_NUM DB ?
MSG_OPEN DB 0AH,0DH,'INPUT INTEGER: ','$'
MSG_DEC DB 0AH,0DH,'THE DEC RESULT IS: ','$'
MSG_BIN DB 0AH,0DH,'THE BINARY RESULT IS: ','$'
MSG_HEX DB 0AH,0DH,'THE HEX RESULT IS: ','$'
MSG_COUNT DB 0AH,0DH,'THE NUMBER OF "1" IS: ','$'
TABLE DW MSG_OPEN,MSG_DEC,MSG_BIN,MSG_HEX,MSG_COUNT
DATA ENDS
;----------------------------------------
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
BEGIN: PUSH DS
XOR AX,AX
PUSH AX
;--------------------------------------------
MOV AX,DATA
MOV DS,AX
LEA SI,TABLE
LEA BX,ASCII_VALUE
MOV DX,[SI]
MOV AH,09H
INT 21H
LEA DX,ASCII_VALUE
MOV AH,0AH
INT 21H
CALL TO_BIN
CALL PRINT_BIN
CALL PRINT_DEC
CALL PRINT_HEX
CALL COUNT
RET
MAIN ENDP
;---------------------------------------------
TO_BIN PROC NEAR
XOR AX,AX
XOR DX,DX
XOR BX,BX
XOR CX,CX
MOV BL,10D
LEA DI,ASCII_VALUE
MOV CL,[DI+1];
INC DI
INC DI
M: PUSH CX
DEC CX
XOR AX,AX
MOV AL,[DI]
AND AL,0FH
CMP CX,0
JZ NN
AAAA: PUSH AX
SHL AX,1
SHL AX,1
SHL AX,1
MOV BX,AX
POP AX
SHL AX,1
ADD AX,BX
LOOP AAAA
NN: ADD DX,AX
POP CX
INC DI
LOOP M
MOV BINARY_VALUE,DX
RET
TO_BIN ENDP
;----------------------------------------------
PRINT_DEC PROC NEAR
LEA SI,TABLE
MOV DX,[SI+2]
MOV AH,09H
INT 21H
XOR CX,CX
LEA DI,ASCII_VALUE
MOV CL,[DI+1]
INC DI
INC DI
N: MOV DL,[DI]
INC DI
MOV AH,02H
INT 21H
LOOP N
RET
PRINT_DEC ENDP
;------------------------------------------------
PRINT_BIN PROC NEAR
LEA SI,TABLE
MOV DX,[SI+4]
MOV AH,09H
INT 21H
MOV CX,16
XOR DX,DX
MOV BX,BINARY_VALUE
PO:ROL BX,1
MOV DL,BL
AND DL,01H
ADD DL,30H
MOV AH,02H
INT 21H
LOOP PO
RET
PRINT_BIN ENDP
;------------------------------------------------
PRINT_HEX PROC NEAR
LEA SI,TABLE
MOV DX,[SI+6]
MOV AH,09H
INT 21H
XOR DX,DX
MOV BX,BINARY_VALUE
MOV CX,4
P:PUSH CX
MOV CL,4
ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,39H
JA ADDTO
MOV AH,02H
INT 21H
JMP T
ADDTO:ADD DL,07H
MOV AH,02H
INT 21H
T:POP CX
LOOP P
MOV DL,48H
MOV AH,02H
INT 21H
RET
PRINT_HEX ENDP
;------------------------------------------------
COUNT PROC NEAR
LEA SI,TABLE
XOR DX,DX
MOV DX,[SI+8]
MOV AH,09H
INT 21H
XOR DX,DX
MOV BX,BINARY_VALUE
MOV CX,0010H
CCC:SHL BX,1
JNC EXIT
INC DX
EXIT:LOOP CCC
MOV AX,DX
MOV BL,10
DIV BL
MOV DX,AX
CMP DL,0
JZ XXX
ADD DL,30H
MOV AH,02H
INT 21H
XXX: MOV CX,0008H
ROL DX,CL
ADD DL,30H
MOV AH,02H
INT 21H
RET
COUNT ENDP
;------------------------------------------------
CODE ENDS
END BEGIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -