汇编程序:查表法找ASCII

【任务】用查表法输出16进制数的各个符号
(本任务旨在演示lodsb、stosb串传送指令,以及xlat查表指令)

【参考解答】

assume cs:coseg,ds:table,ss:stack,es:table
table    segment
tab_da    db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
          db 41h,42h,43h,44h,45h,46h
hextab    db 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh
asibuf    db 16 dup(?)
eol       db '$'
table    ends

stack segment para stack 'stack'
    stapn db 100 dup(?)
stack ends

coseg segment
start:
        mov ax,table
        mov ds,ax
        mov es,ax

        mov si,offset hextab ;根据si
        mov bx,offset tab_da ;表的基址必须放在bx中(必须的)
        mov di,offset asibuf ;结果放进di
        mov cx,16            ;循环计数器
next:
        lodsb       ;从[si] 装入一个字节 --> al
        xlat tab_da ;xlat以al为索引,查tab_da表,结果还是放在al中
        stosb       ;再将al存入[di]
        loop next   ;cx--,if cx<> 进入下一循环

        mov cx,16
        mov ah,2    ;显示字符的功能号
        xor si,si
again:
        mov dl,asibuf[si]
        int 21h
        inc si
        loop again

    mov ax,4c00h
    int 21h
coseg ends
 end start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值