学习王爽《汇编语言》第一个课程设计遇到无法向显存写数据的问题

z752964360 2009-06-18 11:41:05
这是一个把 数值型数据转化成字符串显示的程序,其中show_str在单独使用时没问题和dtoc结合后就有问题了
显示不出正常的字符,但debug发现,转化已经完成写不到B800的显存里
assume cs:code,ss:stack,ds:data

data segment
dw 32 dup(0)
data ends

stack segment
dw 32 dup(0)
stack ends

code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,64

mov ax,12666
mov si,0
call dtoc

mov dh,9
mov dl,50
mov cl,2
mov si,0
call show_str

mov ax,4c00h
int 21h

dtoc:push bx
push cx
push si
mov bx,0
s301: mov cx,10
call divdw
add cl,30h
push cx
inc bx
mov cx,ax
add cx,dx
jcxz ok301
jmp s301

ok301:mov cx,bx
s302: pop ax
mov [si],al
inc si
loop s302

mov byte ptr [si],0
pop si
pop cx
pop bx
ret
divdw: push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx

pop bx
ret
show_str: push es
push ax
push cx
push dx
push di
push si

mov ax,0b800h
mov es,ax
; mov si,0
;初始化显存段地址,

mov al,160
mul dh
add dl,dl
mov dh,0
add ax,dx
mov di,ax ;显存地址
mov al,cl
s101: mov cl,[si]
mov ch,0
jcxz ok101
mov byte ptr es:[di],cl
mov byte ptr es:[di+1],al
inc si
add di,2
jmp s101

ok101: pop si
pop di
pop dx
pop cx
pop ax
pop es
ret

code ends
end start
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanlingcg 2009-06-18
  • 打赏
  • 举报
回复
编译正常,显示正常。423965050
soujiro 2009-06-18
  • 打赏
  • 举报
回复
恩?我的可以啊
我用的集编译,运行,debug于一体的编译器~
z752964360 2009-06-18
  • 打赏
  • 举报
回复
z752964360 2009-06-18
  • 打赏
  • 举报
回复
z752964360 2009-06-18
  • 打赏
  • 举报
回复

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧