关于汇编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 23:06 编辑
问题1:闪烁要在实模式下才能看到(纯DOS)
问题2:显存中的数据和屏幕上的内容一一对应
看右边的 "AL,"
是不是太眼熟了?
看图片的上面
"076D:0023 8A04 MOV AL,"
我再说一次:显存中的数据和屏幕上的内容一一对应
人造人 发表于 2018-12-9 21:52
问题1:闪烁要在实模式下才能看到(纯DOS)
好像有点明白了,闪烁知道了。
就是显示的问题,意思是说执行了es:, al , 其实是把al , ,放进去了。那我想看al给es:里面实际的数据怎么看啊? 请教了! 李兵 发表于 2018-12-10 09:39
好像有点明白了,闪烁知道了。
就是显示的问题,意思是说执行了es:, al , 其实是把al , ,放进 ...
你确实把65h写到es:0c 的位置了,但是debug要在屏幕上显示内容,debug把你写入的65h覆盖了
“显存中的数据和屏幕上的内容一一对应”
仔细品味这句话
人造人 发表于 2018-12-10 12:32
你确实把65h写到es:0c 的位置了,但是debug要在屏幕上显示内容,debug把你写入的65h覆盖了
“显存中的数 ...
现在我可能理解不了,相信以后会了解的,感谢你费心回答,你也是我学习过程中的指导员{:10_275:}
页:
[1]