xiaochen 发表于 2017-9-9 22:31:43

w应该在屏幕的中央啊 为什么到距离屏幕的上边是11行而不是12行

assume cs:code
data segment
db 'welcome to masm'
data ends
code segment
start:mov ax,data
      mov ds,ax
      mov bx,0
      mov ax,0b800h
      mov es,ax
      mov bp,0
      mov cx,12   
    s:add bp,00a0h
      loop s
      mov al,ds:
      mov es:,al
      mov byte ptr es:,00000001b
      mov ax,4c00h
      int 21h
      code ends
      end start
w应该在屏幕的中央啊 为什么到距离屏幕的上边是11行而不是12行

3-3 发表于 2017-9-9 22:36:16

是不是算的时候出错了?

xiaochen 发表于 2017-9-9 22:42:09

3-3 发表于 2017-9-9 22:36
是不是算的时候出错了?

没有啊 我执行12次循环 把bp付值到b4 h应位于中央啊 为啥 距离屏幕上边是11行而不是12行呢

3-3 发表于 2017-9-9 22:45:58

本帖最后由 3-3 于 2017-9-9 22:49 编辑

是算的问题,你用计算器算一下,第12行的首地址应该是b8780h,你算出来的是多少?

3-3 发表于 2017-9-9 22:56:37

我是在第12行得到结果了。

xiaochen 发表于 2017-9-9 22:58:33

3-3 发表于 2017-9-9 22:45
是算的问题,你用计算器算一下,第12行的首地址应该是b8780h,你算出来的是多少?

我debug了一下,w是被移到了13行,即bp执行12次循环后是780,但为什么屏幕上显示的是在12行呢

xiaochen 发表于 2017-9-9 23:01:59

第十三行的首地址是b8780把

3-3 发表于 2017-9-9 23:02:18

什么意思?W为什么被移到了13行?   780h = 0a0h * 0ch

3-3 发表于 2017-9-9 23:02:51

xiaochen 发表于 2017-9-9 23:01
第十三行的首地址是b8780把

那是第12行的地址

xiaochen 发表于 2017-9-9 23:16:28

第一行为B8000
第二行为B80A0
            B8140
            B81E0
            B8280
            B8320
            B83C0
            B8460
            B8500
            B85A0
            B8640
            B86E0
            B8780
         
            
            
            
         

3-3 发表于 2017-9-9 23:37:49

对,是显示的第13行。这里你要考虑到屏幕的刷新。你调试的时候可以看一下,在完成你的exe之后,屏幕又增加了一行命令行。

xiaochen 发表于 2017-9-10 00:01:45

3-3 发表于 2017-9-9 23:37
对,是显示的第13行。这里你要考虑到屏幕的刷新。你调试的时候可以看一下,在完成你的exe之后,屏幕又增加 ...

明白了 谢谢啊
页: [1]
查看完整版本: w应该在屏幕的中央啊 为什么到距离屏幕的上边是11行而不是12行