立志当学霸! 发表于 2013-12-23 21:32:34

新手求助,大神勿打击汇编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   

立志当学霸! 发表于 2013-12-23 21:56:33

求助。求助啊,我知道我编的乱七八糟,好心人帮我看看啊,我用dosbox运行没有显示。

立志当学霸! 发表于 2013-12-23 22:33:20

大神们,求助,help!:cry

立志当学霸! 发表于 2013-12-23 22:48:12

ryan0632 发表于 2013-12-23 22:36 static/image/common/back.gif
你问题好几个呢,我刚才调试了半天。
子程序CX不用压栈,
重复了一个mov ch,0,


恩,谢谢,dec dl 和sub ax,2意义重复了是吗? 谢谢你,我都看了一天了,呜呜。

立志当学霸! 发表于 2013-12-23 22:57:58

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:42

我刚看到,刚要调试。看来版主解决了、。

立志当学霸! 发表于 2013-12-23 23:05:43

霸气外露 发表于 2013-12-23 23:04 static/image/common/back.gif
我刚看到,刚要调试。看来版主解决了、。

。。。谢谢。

立志当学霸! 发表于 2013-12-23 23:10:48

还是javascript:;有点问题,显示是第2列,小甲鱼老师的视频里面是第3列

立志当学霸! 发表于 2013-12-23 23:16:47

霸气外露 发表于 2013-12-23 23:04 static/image/common/back.gif
我刚看到,刚要调试。看来版主解决了、。

弱弱问一下,伪指令中,assume cs:code,ds:data中,cs:code ds:data都一定要写吗?
我看小甲鱼老师有时候就没有写ds:data 这个有关系吗,这个伪指令有点不明觉厉
页: [1]
查看完整版本: 新手求助,大神勿打击汇编51实验一无法显示问题