新手求助,大神勿打击汇编51实验一无法显示问题
小的自己写的代码如下assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!',0
datasg ends
codesg segment
start: mov dh,8
mov dl,2
mov cl,2;RGB red green bule 4 2 1
mov ax,datasg
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str: push dx; 给定参数 dh=行号 dl=列号 cl=颜色 ds:si指向字符串首地址 返回:无 作用:在指定位置显示字符串,以0结尾
push si
push cx
mov ch,0
mov ax,0b800h
mov es,ax
mov al,160
dec dh
mul dh
mov bx,ax
dec dl
mov al,2
mul dl
sub ax,2
add bx,ax
mov bh,0
mov bl,dl
mov al,cl
mov di,0
mov ch,0
s: mov cl,ds:
jcxz ok
mov es:,al
mov es:,cl
inc si
add di,2
jmp short s
ok:pop cx
pop si
pop dx
ret
codesg ends
end start
求助。求助啊,我知道我编的乱七八糟,好心人帮我看看啊,我用dosbox运行没有显示。 大神们,求助,help!:cry ryan0632 发表于 2013-12-23 22:36 static/image/common/back.gif
你问题好几个呢,我刚才调试了半天。
子程序CX不用压栈,
重复了一个mov ch,0,
恩,谢谢,dec dl 和sub ax,2意义重复了是吗? 谢谢你,我都看了一天了,呜呜。 ryan0632 发表于 2013-12-23 22:51 static/image/common/back.gif
跟那个没关系,你这里减1就是错的,因为还要跟后边al相乘,然后才AX减2算出列,减了1再乘可就差2个字节了 ...
我在乘2之前就减1,这样乘2之后就减了2,跟后面减2是一样的道理吧? 俩个字节才是一个字符。一个是属性一个是字符。 我刚看到,刚要调试。看来版主解决了、。 霸气外露 发表于 2013-12-23 23:04 static/image/common/back.gif
我刚看到,刚要调试。看来版主解决了、。
。。。谢谢。 还是javascript:;有点问题,显示是第2列,小甲鱼老师的视频里面是第3列 霸气外露 发表于 2013-12-23 23:04 static/image/common/back.gif
我刚看到,刚要调试。看来版主解决了、。
弱弱问一下,伪指令中,assume cs:code,ds:data中,cs:code ds:data都一定要写吗?
我看小甲鱼老师有时候就没有写ds:data 这个有关系吗,这个伪指令有点不明觉厉
页:
[1]