将存储字单元Result的本人学号(例如:19年级4班学号30即为:19430数字),以不同进制的方式显示在屏幕上。设计显示菜单,通过菜单选择1 HEX进制、2 DEC 十进制、3 BIN二进制,4返回。
DATAS SEGMENT
Result DW 19418D ;=4BDAH=100 1011 1101 1010B
BUFF DW 10000,1000,100,10,1 ;中间变量
Menu DB' Menu-Display Format Select(1-4):',0DH,0AH
DB' 1HEX-Hexadecimal',0DH,0AH ;4BDAH
DB' 2DEC-Decimal',0DH,0AH ;19418
DB' 3BIN-Binary',0DH,0AH ;100 1011 1101 1010B
DB' 4ESC-Exit!',0DH,0AH,'$'
IN_Err DB 0DH,0AH,'*****INPUT ERROR!*****',0DH,0AH,'$'
LF DB 0DH,0AH,'$'
DATAS ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,Menu
MOV AH,09H
INT 21H
MAIN:
MOV AH,01H
INT 21H
CALL CRLF
CMP AL,31H
JE NEXT1
CMP AL,32H
JE NEXT2
CMP AL,33H
JE NEXT3
CMP AL,34H
JE NEXT4
JMP NEXT5
NEXT1:
LEA SI,Result
MOV BX,[SI]
CALL HEX
CALL CRLF
JMP MAIN
NEXT2:
MOV CX,5
MOV AX,Result
MOV SI,OFFSET BUFF
NEXT: XOR DX,DX
DIV WORD PTR[SI]
PUSH DX
OR AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
INC SI
INC SI
POP AX
LOOP NEXT
CALL CRLF
JMP MAIN
NEXT3:
LEA SI,Result
MOV AX,[SI]
CALL BIN
CALL CRLF
JMP MAIN
NEXT4:
CALL EX
JMP MAIN
NEXT5:
CALL INTERROR
JMP MAIN
BIN proc near
PUSH BX
PUSH CX
PUSH DX
MOV BX,AX
MOV CX,16
S: MOV DX,30H
SHL BX,1
ADC DX,0
MOV AH,2
INT 21H
LOOP S
POP DX
POP CX
POP BX
RET
BIN endp
HEX proc near
MOV CH,04D
ROTATE:
MOV CL,04D
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,'9'
JBE PRINTF
ADD AL,07H
PRINTF:
MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNE ROTATE
RET
HEX endp
INTERROR proc near
LEA DX,IN_Err
MOV AH,09H
INT 21H
RET
INTERROR endp
CRLF proc near
LEA DX,LF
MOV AH,09H
INT 21H
RET
CRLF endp
EX proc near
MOV AH,4CH
INT 21H
RET
EX endp
CSEG ENDS
END START |