作者:axyz163 贴子要求Mail回复.此贴贴于2011-11-8 11:52:21,已被阅读448次/回复2 
新手,遇到问题,希望高手能帮忙解答一下
;给出行列,输出data段中的字符串
;复制字符串的时候遇到0停止
;问题是程序编译链接正确,不显示结果,但是全屏dos可以显示
assume    cs:code;实验10.1
data     segment
    db 'welcome to masm!', 0
data     ends

code     segment
start:     mov dh, 15;行
           mov dl, 60;列
           mov cl, 2
           mov ax, data
           mov ds, ax
           mov si, 0
           call show_str    
    
    mov ax, 4c00h
    int 21h

show_str:   mov ch, 0
      mov al, 2
      mul dl
      mov di, ax
      mov al,160
      mul dh
      mov bx, ax
      mov ax, 0b800h
      mov es, ax
s:      push cx;感觉这边cx压栈和后面的出栈有问题,但是不懂为什么
      mov es:[bx].1[di], cl
       mov cl, [si]
            jcxz ok
      mov es:[bx][di], cl
      inc si
             add bx, 2
      pop cx
      jmp s

ok:    ret    

code     ends

end    start

此贴的回复贴(直接):
直接写显存?地址正确吗?是VGA字符模式吗?338 bokoisme 2011-11-14 21:11:52 0 正常
怎么还有这么多人在弄DOS下的汇编呢?如果想搞贴近硬件方面的开发,可以看看USB接口的资料,PCI总线的数据格式以及指令什么的,只是我个人看法,大家不要喷我379 流浪的木马 2011-11-15 10:23:17 0 正常