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

📄 22.asm

📁 微机原理与接口技术的部分课后题(十几题经典的)程序
💻 ASM
字号:
DATA SEGMENT
   RBUF DB 10H			;定义缓冲区用于存放输入的数
	DB ?
	DB 10H DUP(?)
DATA ENDS
STACK SEGMENT PARA STACK
  DB 10H DUP(?)
STACK ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK
START:  MOV AX,DATA
        MOV DS,AX
	MOV SI,02H
	LEA DX,RBUF		;输入四位十六进制数,将ASCII码存入缓冲区中
	MOV AH,0AH
	INT 21H
	MOV DL,0AH		;换行
	MOV AH,02H
	INT 21H
	MOV DL,0DH		;回车
	MOV AH,02H
	INT 21H
	MOV CX,3		;赋计数初值
	MOV DX,00H
L1:     MOV AL,RBUF[SI]		;取缓冲区中的ASCII码
	CALL ATH		;调用ASCII码转十六进制数子程序
	OR DL,AL		;将转换后的数存入DL中
	PUSH CX
	CMP CX,0
	JLE L2
	MOV CL,4
	SHL DX,CL		;左移四位,将新存入的数放DH中
	POP CX
	INC SI
	DEC CX
	JGE L1
L2:     MOV AX,DX		;将数存入AX
	MOV CX,4
L3:     PUSH CX
	CMP CX,0
	JLE L4
	MOV CL,4
	ROL AX,CL		;循环左移,调整读取的数间位置	
	MOV BL,AL
	CALL ASC		;调用转ASCII码子程序
	PUSH AX
	MOV DL,BL
	MOV AH,02H		;显示结果
	INT 21H
	POP AX
	POP CX
	DEC CX
	JGE L3
L4:     MOV AH,4CH		;返回操作系统
	INT 21H

ATH PROC			;ASCII码转十六进制数子程序
	PUSH CX
	AND AL,07FH		;保留低7位,即ASCII码
	CMP AL,30H		;控制输入量是大于等于30H的数,否则无效
	JGE J1			
	JMP J5			
J1:     CMP AL,39H		;大于则转J2,说明是字符A-F
	JG J2
	SUB AL,30H		;否则减30H后转J4,说明是数字0-9
	JMP J4
J2:     CMP AL,41H		;逐步缩小范围,控制字符在A-F	
	JGE J3
	JMP J5
J3:     CMP AL,46H
	JG J5
	SUB AL,37H
J4:     AND AL,0FH
J5:     POP CX
	RET
ATH ENDP


ASC PROC			;转ASCII码子程序
	PUSH CX
	AND BL,0FH
	CMP BL,09H
	JLE J6
	ADD BL,07H
J6:     ADD BL,30H
	POP CX
	RET
ASC ENDP
CODE ENDS
  END START

      

⌨️ 快捷键说明

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