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

📄 p27.asm

📁 assembly code for MASM 6.0
💻 ASM
字号:

.model small
.stack 100
.data
	CR		EQU	0AH
	LF		EQU	0DH
        INP             DB 2    DUP(0)
        MES1           	DB      CR,LF,'ENTER HEX NO $'
        MES2          	DB      CR,LF,'BCD NO $', CR,LF
        MES3           	DB      CR,LF,'INPUT IS INVALID HEX NO $'
	BUFF		DB	05
			DB 00
			DB 05 DUP(0)
	CNT1		DW 0
.code
MAIN :                  MOV     AX,@data        ; Initialise data segment
			MOV 	DS,AX
						; HEX to BCD
			MOV 	AH,09H
                        LEA     DX,MES1         ; Display string
			INT 	21H
			MOV 	AH,0AH		; Buffered keyboard I/P
                        LEA     DX,BUFF
			INT	21H
			MOV	CH,02H
			XOR	DI,DI
			MOV	SI,01H
			INC	DI
			INC	DI
BACK:                   MOV     AH,BUFF[DI]
						; ASCII to HEX
			CMP	AH,60H
			JG	ALPHA
			CMP	AH,3AH
			JL	NEXT
			SUB	AH,37H
			JMP	DISP
NEXT:			SUB	AH,30H
			JMP	DISP
ALPHA:			SUB	AH,57H
DISP:
			MOV	CL,04H
			ROR	AH,CL
			INC	DI
                        MOV     AL,BUFF[DI]
			CMP	AL,60H
			JG	ALPHA1
			CMP	AL,3AH
			JL	NEXT1
			SUB	AL,37H
			JMP	DISP1
NEXT1:			SUB	AL,30H
			JMP	DISP1
ALPHA1:			SUB	AL,57H
DISP1:
			OR	AH,AL
                        MOV     INP[SI],AH
			DEC	SI
			INC	DI
			DEC	CH
			JNZ	BACK
			MOV	CNT1,00H
			MOV	AX,WORD PTR INP
LOOP2:			MOV	CH,00H
			MOV	BX,0AH
			MOV	DX,00H
			DIV	BX		; Divide the number by 10
			PUSH	DX		; Store the remainder
			INC	CNT1
			CMP	AX,0
			JNZ	LOOP2
			MOV	AH,09H
                        LEA     DX,MES2         ; Display string
			INT	21H
DIS :			POP	DX
			MOV	AH,02H
			ADD	DL,30H
			INT	21H
			DEC	CNT1
			CMP	CNT1,0
			JNZ	DIS
			JMP	EXIT
TER:			MOV	DX,00H
			MOV	AX,09H
                        LEA     DX,MES2 	; I/P is invalid HEX number
			INT	21H
EXIT:			MOV	AH,4CH		; Terminate
			INT	21H
                        END     MAIN
			END

⌨️ 快捷键说明

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