CRLF
MACRO
;回车,换行
MOV AH, 02H
MOV DL, 0DH
INT 21H
MOV AH, 02H
MOV DL, 0AH
INT 21H
ENDM
DATA
SEGMENT
MESS1 DB 'INPUT THE NUMBER ACCORDING TO HEXNUM!',0DH,0AH,'$'
MESS2
DB 'THE RESULT IS: $'
ERROR DB 'INPUT ERROR! INPUT ONCE MORE!',0DH ,0AH,'$'
LEN
DW 1
CY
DW ?
BUF
DW 256 DUP(0)
DATA
ENDS
STACK
SEGMENT STACK 'STACK'
DW 32 DUP(?)
STACK
ENDS
CODE
SEGMENT
ASSUME CS: CODE, DS:DATA, ES:DATA, SS:STACK
START:
MOV AX, DATA
MOV DS,AX
MOV ES, AX
MOV AH, 09H
MOV DX,OFFSET MESS1
INT 21H
;显示输入提示信息
CALL GETNUM
;读取键入的N值
MOV BP, DX
;N值送BP
CMP BP, 0
JZ EEE
CMP BP, 1
JZ EEE
;N=0或N=1则转EEE
MOV SI, OFFSET BUF
;缓冲区首址
MOV [SI],DX
;缓冲区初始化为值N
XXX:
DEC BP
;N值减1
CMP BP,0001H
JZ LLL
;若为1则转LLL
XOR BX,BX
;偏移指针清0
MOV WORD PTR CY,0
;进位单元清0
MOV CX,LEN
;当前结果长度送CX
TTT:
MOV AX, [SI+BX]
MUL BP
;相乘
ADD AX,CY
;加低位进位
JNC JJJ
;结果无进位转JJJ
INC DX
;有进位将高位单元加1
JJJ:
MOV [SI+BX],AX
;结果送缓冲区中
MOV CY,DX
;高位单元送进位单元
INC BX
INC BX
;一个字长度
LOOP TTT
;循环
CMP DX, 0000H
JZ BBB
;最后1次的进位为0则转BBB
INC WORD PTR LEN
;长度加1
MOV [SI+BX],DX
;进位送缓冲区中
BBB:
JMP XXX
EEE:
MOV SI,OFFSET BUF
MOV WORD PTR [SI],1
;结果为1
LLL:
MOV AH, 09H
MOV DX,OFFSET MESS2
INT 21H
;显示
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
头
MOV CX,LEN
MOV BX,CX
;长度
DEC BX
SHL BX,1
;1个字为两个字节
CCC:
MOV AX, [SI+BX]
CALL DISP
DEC BX
DEC BX
;显示结果
LOOP CCC
MOV AX,4C00H
;结束
INT 21H
DISP1
PROC NEAR
;显示字符(AL)
MOV BL, AL
MOV DL, BL
MOV CL, 04
ROL DL, CL
AND DL, 0FH
CALL DISPL
;显示高位
MOV DL, BL
AND DL, 0FH
CALL DISPL
;显示低位
RET
DISP1
ENDP
DISPL
PROC NEAR
;显示一位(DL=0XH)
ADD DL, 30H
CMP DL, 3AH
JB DDD
ADD DL, 27H
DDD:
MOV AH, 02H
INT 21H
RET
DISPL
ENDP
DISP
PROC NEAR
;显示4位数(HEX)
PUSH BX
PUSH CX
PUSH DX
PUSH AX
MOV AL, AH
CALL DISP1
POP AX
CALL DISP1
POP DX
POP CX
POP BX
RET
DISP
ENDP
GETNUM
PROC NEAR
;字符匹配程序
PUSH CX
REGET:
XOR DX, DX
GGG:
MOV AH, 01H
INT 21H
CMP AL, 0DH
JZ PPP
CMP AL, 20H
JZ PPP
SUB AL, 30H
JB KKK
CMP AL, 0AH
JB GETS
CMP AL,11H
JB KKK
SUB AL, 07H
CMP AL, 0FH
JBE GETS
CMP AL, 2AH
JB KKK
CMP AL, 2FH
JA KKK
SUB AL, 20H
GETS:
MOV CL, 04H
SHL DX,CL
XOR AH, AH
ADD DX ,AX
JMP GGG
KKK:
CRLF
MOV AH, 09H
MOV DX,OFFSET ERROR
INT 21H
JMP REGET
PPP:
PUSH DX
CRLF
POP DX
POP CX
RET
GETNUM
ENDP
CODE
ENDS
END START