鱼C论坛

 找回密码
 立即注册
查看: 3227|回复: 4

[已解决]关于汇编es段内容

[复制链接]
发表于 2018-12-9 21:52:23 | 显示全部楼层 |阅读模式
20鱼币
这道题按小甲鱼老师的打的,也能运行到色彩字符,但是使用debug调试有两点不明白:
1.闪烁的字体说要全屏才可以看,但是我全屏了,没有闪烁,用 “Masm for Windows 集成实验环境 2015” 运行也是一样没有闪烁,这是什么原因?   见图片1111

2.调试过程中,使用-D指令查看ES段,里面数值有变化但是看不懂规律,没有把al对应的值给对应es:[di]的偏移地址,这是什么意思?   见图片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:[si]
        mov es:[di], al
        inc si
        add di, 2
        loop s1                  
       
        mov di, 1               
        pop bx
        mov al, ds:10h[bx]     
        inc bx                  
         
        mov cx, 10h            
s2:   mov es:[di], 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)
GIF.gif


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


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

最佳答案

查看完整内容

问题1:闪烁要在实模式下才能看到(纯DOS) 问题2:显存中的数据和屏幕上的内容一一对应 看右边的 "AL,[SI]" 是不是太眼熟了? 看图片的上面 "076D:0023 8A04 MOV AL,[SI]" 我再说一次:显存中的数据和屏幕上的内容一一对应
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-9 21:52:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 人造人 于 2018-12-9 23:06 编辑

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


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


看右边的 "AL,[SI]"
是不是太眼熟了?
看图片的上面
"076D:0023 8A04               MOV            AL,[SI]"
我再说一次:显存中的数据和屏幕上的内容一一对应
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-10 09:39:50 | 显示全部楼层
人造人 发表于 2018-12-9 21:52
问题1:闪烁要在实模式下才能看到(纯DOS)

好像有点明白了,闪烁知道了。
就是显示的问题,意思是说执行了es:[di], al , 其实是把al , [si] ,放进去了。  那我想看al给es:[di]里面实际的数据怎么看啊?   请教了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

你确实把65h写到es:0c 的位置了,但是debug要在屏幕上显示内容,debug把你写入的65h覆盖了
显存中的数据和屏幕上的内容一一对应
仔细品味这句话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

现在我可能理解不了,相信以后会了解的,感谢你费心回答,你也是我学习过程中的指导员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 22:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表