李兵 发表于 2018-12-9 21:52:23

关于汇编es段内容

这道题按小甲鱼老师的打的,也能运行到色彩字符,但是使用debug调试有两点不明白:
1.闪烁的字体说要全屏才可以看,但是我全屏了,没有闪烁,用 “Masm for Windows 集成实验环境 2015” 运行也是一样没有闪烁,这是什么原因?   见图片1111

2.调试过程中,使用-D指令查看ES段,里面数值有变化但是看不懂规律,没有把al对应的值给对应es:的偏移地址,这是什么意思?   见图片2222

希望懂的师兄不吝赐教,感谢!!!

assume cs:codesg, ds:datasg, ss:stacksg

datasg segment
      db 'welcome to masm!'   
        db 02h, 24h, 71h         
datasg ends

stacksg segment
      dw 8 dup(0)            
stacksg ends       

codesg segment
start:
      mov ax, datasg
        mov ds, ax
        mov ax, stacksg
        mov ss, ax
        mov sp, 10h            
       
        xor bx, bx            
        mov ax, 0b872h         
       
        mov cx, 3               
s3:   push cx               
      push ax                  
        push bx
       
      mov es, ax            
       
        mov si, 0               
        mov di, 0            
       
        mov cx, 10h            
s1:   mov al, ds:
      mov es:, al
        inc si
        add di, 2
        loop s1                  
       
        mov di, 1               
        pop bx
        mov al, ds:10h   
        inc bx                  
       
        mov cx, 10h            
s2:   mov es:, al         
      add di, 2
        loop s2
       
        pop ax                  
        add ax, 0ah            
       
        pop cx                  
        loop s3
       
        mov ax, 4c00h
        int 21h
codesg ends
end start       
           
       
        mov ax, 4c00h
        int 21h
codesg ends
end start       

人造人 发表于 2018-12-9 21:52:24

本帖最后由 人造人 于 2018-12-9 23:06 编辑

问题1:闪烁要在实模式下才能看到(纯DOS)



问题2:显存中的数据和屏幕上的内容一一对应



看右边的 "AL,"
是不是太眼熟了?
看图片的上面
"076D:0023 8A04               MOV            AL,"
我再说一次:显存中的数据和屏幕上的内容一一对应

李兵 发表于 2018-12-10 09:39:50

人造人 发表于 2018-12-9 21:52
问题1:闪烁要在实模式下才能看到(纯DOS)




好像有点明白了,闪烁知道了。
就是显示的问题,意思是说执行了es:, al , 其实是把al , ,放进去了。那我想看al给es:里面实际的数据怎么看啊?   请教了!

人造人 发表于 2018-12-10 12:32:46

李兵 发表于 2018-12-10 09:39
好像有点明白了,闪烁知道了。
就是显示的问题,意思是说执行了es:, al , 其实是把al , ,放进 ...

你确实把65h写到es:0c 的位置了,但是debug要在屏幕上显示内容,debug把你写入的65h覆盖了
“显存中的数据和屏幕上的内容一一对应”
仔细品味这句话

李兵 发表于 2018-12-10 21:44:22

人造人 发表于 2018-12-10 12:32
你确实把65h写到es:0c 的位置了,但是debug要在屏幕上显示内容,debug把你写入的65h覆盖了
“显存中的数 ...

现在我可能理解不了,相信以后会了解的,感谢你费心回答,你也是我学习过程中的指导员{:10_275:}
页: [1]
查看完整版本: 关于汇编es段内容