汇编语言16进制数转换为ASCII码显示

题目要求

       使用 Masm for Windows 软件编程,将一个十六进制数组转换成其ASCII码组并显示出来。

代码设计

       采用查表法,实现一组十六进制数转换为ASCII码显示。先设置ASCII码表分别对应0-9以及A-F,以此来对应一位十六进制的数。为了使程序能够输出多个十六进制数的ASCII码,此时需要通过循环控制程序运行,而结束的标志是待查表hex的元素个数。

       首先获取hex中的第一个元素,对其进行格式化设置,然后调用2号Dos功能进行输出操作。此时将循环标记si加1,再取出下一个元素,直到全部取出和转换。

代码

DATAS SEGMENT
    ;此处输入数据段代码
    ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
	;对应0 ~ 9的ASCII码
	db 41h,42h,43h,44h,45h,46h
	;对应A ~ F的ASCII码
    hex	db 04h,0bh,0fh,06h,0ah,0dH,00H,09H
	;待查的16进制数
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov bx,offset ASCII
	;BX指向ASCII码表

	lea si,hex
	mov cx,LENGTHOF hex	;取得元素个数
again:
	mov al, [si]
	;AL取得一位16进制数
	;恰好就是ASCII码表中的位移
	and al, 0fh	
	;只有低4位是有效的,高4位清0
	xlat     ;换码:AL←DS:[BX+AL]
	mov dl,al	;欲显示的ASCII码送DL
	mov ah,2	;2号DOS功能调用
	int 21h    ;显示一个ASCII码字符
	add si,1    ;指针指向下一个字符
	mov dl,20H	;输出空格,间隔
	mov ah,2	
	int 21h    
	loop again

    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值