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

📄 convert.asm

📁 微机原理实验 包括 口令识别 数制转换 计算三角函数 贪食蛇 扬声器控制
💻 ASM
字号:

DATA   SEGMENT                       
	MSG_IN			DB		"Enter a decimal number:","$"     
	MSG_OUT		DB		0DH,0AH,"The converted hexadecimal number is ","$"  
	MSG_END		DB		"H","$"
	MSG_ERROR 	DB		0DH,0AH,"Input error!","$"
	DECIN     		DB		6,?,6 DUP(?)
DATA    ENDS

STACK SEGMENT STACK
	DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
	ASSUME 	CS:CODE,DS:DATA,SS:STACK 

START:
        MOV     AX,DATA
        MOV     DS,AX
		MOV	DX,OFFSET MSG_IN            
       	CALL 	DISP			;显示输入提示
        LEA 	DX,DECIN                ;    
        CALL 	INPUT			;从键盘输入
        LEA 	SI,DECIN+2              ;   
        CALL 	ASC_HEX		;调用ASC_HEX将输入的十进制转为十六进制 
		MOV	BX,AX			
    	MOV	DX,OFFSET MSG_OUT       ;    
    	CALL   DISP			;输出字符串
		CALL	PRINTHEX		;调用PRINTHEX输出BH的十六进制
		MOV	BH,BL			
		CALL	PRINTHEX		;再次调用PRINTHEX输出BH的十六进制
		MOV	DX,OFFSET MSG_END        
    	CALL   DISP			;输出结尾处的H
		JMP 	EXIT
ERROR:  
MOV	DX,OFFSET MSG_ERROR	;输入错误
	CALL	DISP
EXIT:   
MOV	AH,4CH
    INT 	21H

INPUT   PROC				;输入字符串                                
        MOV	AH,0AH
        INT		21H
        RET
INPUT   ENDP

DISP    PROC     			;显示字符串                           
        MOV	AH,9
        INT		21H
        RET    
DISP    ENDP

ASC_HEX PROC				;十进制ASCII转换为十六进制,存在AX中
	XOR     AX,AX			;将AX置0
	XOR     CX,CX			;将CX置0
 BEGIN:
MOV 	CL,[SI]			;把字符串存的地址传给CL
	CMP	CL,'0'           ;判断字符是否比”0”小
  	JB		ERROR			;如果字符不是数字,则提示错误
    CMP	CL,'9'			;判断字符是否比”9”大
    JA		ERROR			;如果字符不是数字,则提示错误
	MOV 	BL,30H			
	SUB 	CL,BL		;将CL中存放字符所对应的数字
	MOV 	BX,000AH
	MUL 	BX			;AX = AX * 10
	ADD 	AX,CX		;AX = AX + CX ,将当前的字符加上
	INC 	SI			
	MOV 	BX,[SI]		;输入下一个字符
	CMP 	BL,0DH		;遇到回车符停止子程序
	JE  	DONE
	JMP 	BEGIN		;开始处理下一个字符
DONE:	RET
ASC_HEX ENDP

PRINTHEX PROC			;将BH按十六进制显示出
	MOV	DL,BH		;把BH的值存到DL中
	MOV   	CL,4		
	SHR   	DL,CL  		;DL右移4位,先将BH高4位以十六进制显示出
 	ADD   	DL,30H		;”0”的ASCII码为30H
	CMP   	DL,3AH		;如果大于9
	JL 		PDL1
	ADD   	DL,07H 		;再加7 因为 “A”的ASCII码是41H
  PDL1: 
MOV	AH,2		
	INT		21H			;显示出BH高4位的十六进制
	MOV   	DL,BH		
  	AND   	DL,0fH		;取BH的低四位
 	ADD   	DL,30H		;和高四位一样的处理方式,显示出低四位表示的十六进制
	CMP   	DL,3AH
	JL 		PDL2
	ADD    DL,07H
  PDL2: 
MOV 	AH,2
	INT   	21H
	RET
PRINTHEX ENDP

CODE   ENDS 
END    START     

⌨️ 快捷键说明

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