asyz8573 发表于 2013-5-28 12:41:35

下面的代码那里出错了??

本帖最后由 s0512 于 2013-6-13 14:51 编辑

assume          cs:code

data    segment
      db      'Welcome to masm!',0
data    ends

code    segment
      start:                        mov             dh,8
                                                      mov             dl,3
                                                      mov             cl,2
                                                      mov             ax,data
                                                      mov             ds,ax
                                                      mov             si,0
                                                      call            show_str

                                                      mov             ax,4c00h
                                                      int             21h
show_str:                  mov             ax,0b800h
                                                               mov             es,ax
                                                                mov             al,0a0h
                                                                dec             dh
                                                                mul             dh
                                                                mov             dh,0
                                                                add             ax,dx                                                            
                                                                mov             bx,ax



show_obj:                     push            cx
                                                                mov             ch,0
                                                                mov             cl,ds:
                                                                jcxz            ok

                                                                              10

                                                                mov             al,
                                                                mov         es:,al
                                                                   pop            cx
                                                                   mov                  al,cl
                                                                mov          es:,al
                                                                add             bx,2
                                                                inc             si
                                                                jmp             short   show_obj

   ok:                                                pop   cx
                                                                ret
code            ends
      end   start



s0512 发表于 2013-5-28 13:01:50

计算行与列那里处理的有点乱,以及CX储存的颜色那。

s0512 发表于 2013-5-28 13:45:41

assume          cs:code

data    segment
      db      'Welcome to masm!',0
data    ends

code    segment
start:            mov             dh,8         ;8行   8*160
                  mov             dl,3         ;3列   3 * 2
                  mov             cl,2         ;颜色
                  mov             ax,data
                  mov             ds,ax
                  mov             si,0
                  call            show_str      ;显示字符
                  

                  mov             ax,4c00h
                  int             21h   
                  
                  
show_str:         mov             ax,0b800h
                  mov             es,ax
                  mov ah,0 ;先清0试下
                  
                  mov             al,0a0h         ;B800H+160    也就是一行
                  dec             dh    ;前面加了一行,这里-1,对的~嘿嘿   
                  
                  
                  mul             dh    ;在这之前,要保存一下AX才行
                  mov bx,ax
                  mov             dh,0   
                  add dl,dl
                  add bx,dx
                                                                              
                  ;mov             bx,ax



show_obj:         push            cx      ;保存CX
                  mov             ch,0
                  mov             cl,ds:
                  jcxz            ok

                  

                  mov             al,
                  mov         es:,al
                  pop            cx
                  mov                  al,cl
                  mov          es:,al
                  add             bx,2
                  inc             si
                  jmp             short   show_obj

   ok:                                                pop   cx
                                                                ret
code            ends
      end   start希望你满意哈

asyz8573 发表于 2013-5-28 14:17:53

s0512 发表于 2013-5-28 13:01 static/image/common/back.gif
计算行与列那里处理的有点乱,以及CX储存的颜色那。

还是不懂...   详细点被

s0512 发表于 2013-5-28 14:32:21

asyz8573 发表于 2013-5-28 14:17 static/image/common/back.gif
还是不懂...   详细点被

两段代码比较一下就好,就是行数和列数那没处理好而已

asyz8573 发表于 2013-5-28 14:52:52

s0512 发表于 2013-5-28 14:32 static/image/common/back.gif
两段代码比较一下就好,就是行数和列数那没处理好而已

add   dl,dl    这里没看懂   

asyz8573 发表于 2013-5-28 15:01:20

s0512 发表于 2013-5-28 14:32 static/image/common/back.gif
两段代码比较一下就好,就是行数和列数那没处理好而已

我原来的代码加进   add   dl,dl   就可以了         虽然不懂      但还是谢谢你了

s0512 发表于 2013-5-28 15:01:53

asyz8573 发表于 2013-5-28 14:52 static/image/common/back.gif
add   dl,dl    这里没看懂

dl上面有注释,是存放的列数,
字符颜色
dl      CL   
加上颜色的一个字节,相当于DL乘2,才是真正的位置。

s0512 发表于 2013-5-28 15:05:46

asyz8573 发表于 2013-5-28 15:01 static/image/common/back.gif
我原来的代码加进   add   dl,dl   就可以了         虽然不懂      但还是谢谢你了

不用客气的同学!!{:5_109:}

Poison° 发表于 2013-5-28 16:27:44

楼主加油,鱼C加油!我们都看好你哦!

红枫洒下 发表于 2013-5-28 16:53:01

楼主加油,鱼C加油!我们都看好你哦!

★远处的灯火 发表于 2013-5-29 08:47:13

s0512 发表于 2013-5-28 15:05 static/image/common/back.gif
不用客气的同学!!

版主真是给力啊!

有点忧伤 发表于 2013-5-30 13:14:56

激动人心,无法言表!

1249198560 发表于 2013-6-21 21:50:58

楼主加油~~帮顶
页: [1]
查看完整版本: 下面的代码那里出错了??