注册 登录
编程论坛 汇编论坛

[求助]汇编的一个小问题

ybdesire 发布于 2007-09-28 17:00, 846 次点击

想在指定的行列显示一字符串,程序也没错误,但就是显示不出来,麻烦大家帮忙看看:

assume cs:code
data segment
db 'welcome to masm',0
data ends

code segment
start:
mov dh,8 ;dh是行数
mov dl,3 ;dl是列数
mov cl,2 ;cl 颜色
mov ax,data
mov ds,ax
mov si,0
call show_str

mov ax,0
int 16h
mov ax,4c00h
int 21h


;子程序开始
show_str:
mov ax,0B800h
mov es,ax
mov bx,0
dec dh
mov ax,0A0h
mul dh
mov bx,ax ;bx得到所须的行数的偏移地址
mov ax,2
mul dl
add bx,ax ;bx得到所须的行数+列数的偏移地址
s1:
push cl
mov cl,0
mov ch,[si]
jcxz s
pop cl
mov byte ptr es:[bx],ch
mov byte ptr es:[bx+1],cl
inc si
add bx,2
jmp short s1
s:ret
;子程序结束
code ends
end start

4 回复
#2
菜鸟上路2007-09-28 18:06
那就换个编译器试试吧
#3
ybdesire2007-09-28 22:27

大家觉得逻辑方面有错吗???

#4
xieriguo2007-09-28 23:25
你能加多点注释吗?不要让我们看么久才得哦.
你的程序好像有错哦
PUSH CL
and
POP CL
#5
ybdesire2007-09-30 15:19
谢谢,的却是栈的问题,我检查出来了

我觉得不该用栈的时候最好不用,这种想法对吗?
1