题目
1、将data段的数值以十进制的形式显示出来
2、调用10.1的显示程序(用0来开辟足够的data空间)
3、将2进转10进
思路
1、转为十进,只取除法的余数,push dx余数进栈
2、jcxz来控制字符长度,使用其他寄存器暂存和恢复cx的值,通过差额取得长度
3、栈内情况

代码
assume cs:code,ds:data
data segment
db 10 dup(0)
data ends
code segment
start: mov ax,12666
mov bx,data
mov ds,bx
mov si,0
mov bx,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc: mov bp,sp
mov bx,0ah
s: mov dx,0
div bx
push dx
mov cx,ax
jcxz s1
jmp short s
s1:mov cx,sp
push bp
push cx
pop dx
s2: mov cx,dx
add word ptr ss:[bp-2],30h
sub bp,2
sub cx,bp
jcxz s3
jmp short s

这篇博客记录了作者进行汇编语言实验的过程,主要任务是将data段的数值以十进制形式显示,并从2进制转换到10进制。作者提出了转换思路,包括利用除法的余数、控制字符长度,以及栈的操作。实验中发现可以通过在div时直接加30h简化push操作,并注意到显示数值限制在0-65535之间。
最低0.47元/天 解锁文章
287

被折叠的 条评论
为什么被折叠?



