⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p28.asm

📁 assemly code for MASM 6.0
💻 ASM
字号:

.model small
.stack 100
.data
     	CR	EQU 0AH
	LF	EQU 0DH
        MES_1   DB              CR,LF,'ENTER 4-DIGIT BCD NO $'
        MES_2   DB              CR,LF,'HEX NO : $'
        MES_3   DB              CR,LF,'INPUT IS INVALID BCD $'
	MULTI	DW		 1,10,100,1000
	RESULT DW(00)
	INP	DB 05
		DB 00
		DB 05 DUP(0)
	BUFF	DB 05
		DB 00
		DB 05 DUP (0)
	CNT1	DW 0
.code     
MAIN :  MOV     AX,@data         ; Initialise data segment
	MOV	DS,AX
	MOV	AH,09H
	MOV	DX,OFFSET MES_1	; Display
	INT	21H
	XOR	DI,DI
	MOV	AH,0AH
	MOV	DX,OFFSET INP	; I/P number
	INT	21H
	XOR	AX,AX
	XOR	DI,DI
	MOV	CX,0004H
	INC	DI
BACK:	INC	DI
	MOV	AL,INP[DI]	; Check for validity
	CMP	AL,30H
	JB	TER
	CMP	AL,39H
	JG	TER
	SUB	AL,30H
	MOV	INP[DI],AL
	DEC	CX
	JNZ	BACK
	JMP	NEXT
TER:	MOV	DX,00H
	MOV	AH,09H
	MOV	DX,OFFSET MES_3	; I/P is invalid BCD number
	INT	21H
	MOV	AH,4CH		; Terminate
	INT	21H
NEXT:	MOV	DX,0000H
	XOR	DI,DI
	INC	DI
	INC	DI
	MOV	CH,INP[DI]
	XOR	SI,SI
	ADD	SI,06H		; Index for multiplier
	MOV	AL,INP[DI]
	MOV	AH,00H
	MOV	BX,MULTI[SI]
	MUL	BX		; Multiply by 1000
	ADD	RESULT,AX
	XOR	SI,SI
	ADD	SI,04H
	INC	DI
	MOV	AL,INP[DI]
	MOV	AH,00H
	MOV	BX,MULTI[SI]
	MUL	BX		; Multiply by 100
	ADD	RESULT,AX
	INC	DI
	XOR	SI,SI
	ADD	SI,02H
	MOV	AL,INP[DI]
	MOV	AH,00H
	MOV	BX,MULTI[SI]
	MUL	BX		; Multiply by 10
	ADD	RESULT,AX
	INC	DI
	XOR	SI,SI
	ADD	SI,00H
	MOV	AL,INP[DI]
	MOV	AH,00H
	MOV	BX,MULTI[SI]
	MUL	BX		; Multiply by 1
	ADD	RESULT,AX
	MOV	AH,09H
	MOV	DX,OFFSET MES_2	; Display string
	INT	21H
	XOR	SI,SI
	MOV	AX,RESULT	; HEX to ASCII
	MOV	BH,AH
	MOV	CL,04H
	AND	AH,0F0H
	SHR	AH,CL
	CMP	AH,09H
	JBE	SKIP1
	ADD	AH,37H
	JMP	SKIP2
SKIP1:	ADD	AH,30H
SKIP2:	MOV	DL,AH
	MOV	AH,02H
	INT	21H
	MOV	AH,BH
	AND	AH,0FH
	CMP	AH,09H
	JBE	SKIP3
	ADD	AH,37H
	JMP	SKIP4
SKIP3:	ADD	AH,30H
SKIP4:	MOV	DL,AH
	MOV	AH,02H		; Character O/P
	INT	21H
	MOV	AX,RESULT
	MOV	BL,AL
	MOV	CL,04H
	AND	AL,0F0H
	SHR	AL,CL
	CMP	AL,09H
	JBE	SKIP5
	ADD	AL,37H
	JMP	SKIP6
SKIP5:	ADD	AL,30H
SKIP6:	MOV	DL,AL
	MOV	AH,02H
	INT	21H
	MOV	AL,BL
	AND	AL,0FH
	CMP	AL,09H
	JBE	SKIP7
	ADD	AL,37H
	JMP	SKIP8
SKIP7:	ADD	AL,30H
SKIP8:	MOV	DL,AL
	MOV	AH,02H
	INT	21H
	MOV	AH,4CH		; Terminate
	INT	21H
        END     MAIN
        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -