【实验10】(3)数字显示 结果倒置问题。。
实验十(3)dtoc子程序里面有个问题不知道该怎么解决在程序计算转换完成后发现结果是倒着的。。
本来想在初始化BX长度(bx=5)然后递减
但是在不知道长度的情况下应该怎么解决呢?
代码如下
assume cs:code
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 cx,10
div cx
mov cx,dx
jcxz ok
add dl,30h
mov ,dl
mov dx,0
inc bx
jmp dtoc
ok: ret
show_str:
push ax
push dx
push cx
mov di,0
mov ax,0b850h
mov es,ax
a:mov cl,ds:
mov ch,0
jcxz okk
mov es:,cl
inc di
mov byte ptr es:,2
inc di
inc si
jmp short a
okk:pop cx
pop bx
pop ax
ret
code ends
end start
请专家赐教 本帖最后由 yao33468 于 2012-4-23 00:07 编辑
用栈,把余数+30h后入栈,入到商零后再出栈。入栈前可以先入个零,等下出栈出到零就停。
RE: 【实验10】(3)数字显示 结果倒置问题。。
yao33468 发表于 2012-4-23 00:04 static/image/common/back.gif用栈,把余数+30h后入栈,入到商零后再出栈。入栈前可以先入个零,等下出栈出到零就停。
用栈,把余数+30h后入栈,入到商零后再出栈。入栈前可以先入个零,等下出栈出到零就停。 但是长度好像不对吧push 和pop是对字长度操作的呀~ 00 01 入栈后出栈也是 00 01 呀~ yao33468 发表于 2012-4-23 00:08 static/image/common/back.gif
用栈,把余数+30h后入栈,入到商零后再出栈。入栈前可以先入个零,等下出栈出到零就停。
但是长度好像不对吧push 和pop是对字长度操作的呀~ 00 01 入栈后出栈也是 00 01 呀~ 比如 0001出栈到ax,取al存进字符段中不就行了。余数只有八位 yao33468 发表于 2012-4-24 00:01 static/image/common/back.gif
比如 0001出栈到ax,取al存进字符段中不就行了。余数只有八位
{:5_105:}对,有道理~这样确实能行
页:
[1]