汇编语言第四版王爽实验十第三数值显示

变成,将data段中的数据以十进制的形式显示出来

data segment

dw 123,12666,1,8,3,38

data ends

我写的程序具体是这样,写的很杂乱,但是我看过其他人写的程序,有很大的差别,注释也不太会写,所以注释很少,几乎没有,但是思路是对的,新手认真研究,但愿对你有所帮助

ok以上的代码是把数据变为字符串

ok一下的代码是把字符串显示到电脑屏幕上

具体思路就是先把16进制的字节转化为十进制的0-9,利用除法取余的方式,把余数加30h得到十进制ascll码,然后再把每组数据的余数通过入栈,然后再出栈到aa数据段,得到十进制的字符串,

得到十进制的字符串在显示到屏幕上

大致分为两步,第一步得到十进制的字符串(这个比较难,慢慢研究)

第二部把字符串显示到电脑屏幕上,(别忘记清屏在运行程序,之前一直没清屏就运行程序,显示不出来,我还以为程序写错了,cls是清屏)

assume cs:code
data segment
dw 123,12666,1,8,3,38
data ends
aa segment
db 12 dup(0)
aa ends
ios segment
dw 8 dup (0)
ios ends
code segment
start:
mov ax,data
mov ds,ax      ;用ds代表data段地址
mov ax,aa
mov es,ax      ;用es表示aa要写入的段地址
mov si,0        ;用si表示data的偏移地址
mov di,0            ;用di表示aa的偏移地址
mov bx,10     ;用bx表示除数10
mov ax,ios
mov ss,ax
mov sp,14
jmp short s1
s0:
pop ax
mov cx,ax
jcxz s1
mov es:[di],al
inc di
jmp short s0
s1:
mov ax,0
push ax
mov ax,ds:[si]
add si,2
mov cx,ax
jcxz ok
mov dx,0
s:
div bx
mov cx,dx
jcxz s0
add dx,30h
push dx
mov dx,0
jmp short s
ok:
mov dh,8
mov dl,3
mov cl,2
mov ax,aa
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
mov ax,0b800h
mov es,ax          ;将es设置为0b800h
mov al,0a0h
mov ah,0
mul dh
mov bx,ax       ;用bx表示第几行
add dl,dl
mov dh,0
mov di,dx       ;用di表示第几列
mov dl,cl     ;用dx表示颜色的数值
mov cx,0
s3:
mov cl,ds:[si]
jcxz s2
inc si
mov es:[bx+di],cl
inc di
mov es:[bx+di],dl
inc di
jmp short s3
s2:
ret
code ends
end start



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值