84561475 发表于 2014-6-26 00:16:11

王爽汇编实验10(1)的一个问题

我自己编了一下这个实验的第一个程序显示字符串但是有一些问题不知为何,请教一下!assume cs:codesg,ds:datasg

datasg segment

db 'Welcome to Masm!',0

datasg ends

codesg segment

start:        mov dh,8
                mov dl,3
                mov cl,5
                mov ax,datasg
                mov ds,ax
                mov si,0
                call show_str
                mov ax,4c00h
                int 21h
               
               
               
        show_str:
                mov ax,0B800h
                mov es,ax       
                ;计算字符现显示位位置保存在bx中
                mov al,160
                mov bx,0
                mov bl,dh
                mul bl
                mov bx,ax
                mov dh,0
                add bx,dx
               
        s1:        mov dh,cl ;读入高八位的字符属性       
                mov ch,0
                mov cl,ds:
                jcxz ok       ;检查是否读到字符串尾
                mov dl,cl
                mov es:,dl
                mov es:,dh
                inc si
                add di,2
                jmp short s1
               
        ok:        ret

codesg ends
end start
这是我运行后的界面

xiaosawanjava 发表于 2014-6-26 00:16:12

本帖最后由 xiaosawanjava 于 2014-6-26 09:34 编辑







第一个箭头指向错了,是上面一句add dx,dx




vkevke_3437 发表于 2014-6-26 08:58:31

还是别偷懒 把列数dl*2去掉 如果dl是偶数还行 上面dl是3 奇数就会出错 把 mov ah,dl 改为mov al,2 mul dl

青玄 发表于 2014-6-26 10:48:28

支持楼上的回答!{:2_27:}

84561475 发表于 2014-6-26 17:52:06

xiaosawanjava 发表于 2014-6-26 00:16 static/image/common/back.gif
第一个箭头指向错了,是上面一句add dx,dx

谢谢,成功了!

84561475 发表于 2014-6-26 18:13:08

xiaosawanjava 发表于 2014-6-26 00:16 static/image/common/back.gif
第一个箭头指向错了,是上面一句add dx,dx

等等,我还是有点不懂为什么要       ADD DX,DX      
如果不要这一句话的话,那么DX的值是3,就是要3啊,在第四列显示(3)

xiaosawanjava 发表于 2014-6-26 21:10:14

84561475 发表于 2014-6-26 18:13 static/image/common/back.gif
等等,我还是有点不懂为什么要       ADD DX,DX      
如果不要这一句话的话,那么DX的值是3,就是要3啊 ...

额,我看错了是第3列,因为一个字符在显存显示 要占2个字节, 一个是字符的ascii码一个是字符的属性,也就是颜色那些,所以 你要在第3列显示应该是 3*2 等于6 从偏移地址6 开始写入   add dx,dx相当于 dx*2

111011101010010 发表于 2014-6-27 02:57:46

大概知道就行了
等你学32位汇编的时候 够你了解这些东西了

111011101010010 发表于 2014-6-27 03:02:06

我现在 连xor是嘎哈的也记不起来 但不记得不能说是不会用 不知道的时候再查呗
大概知道就行了 这些算法之类的 以后都用不上 又不是小学生 老是算嘎哈啊
因为我不记 听一篇教程我会写个笔记
那笔记里面的东西 就都是我自己的
编程面太广了 源码只要你能看懂 那个程序就是你的
多看源码 。。。。我是这么想的
页: [1]
查看完整版本: 王爽汇编实验10(1)的一个问题