鱼C论坛

 找回密码
 立即注册
查看: 2835|回复: 12

[已解决]指令mov es:[bp],al执行后es:[bp]中的值怎么和al中的不一样

[复制链接]
发表于 2017-9-9 20:26:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xiaochen 于 2017-9-9 20:50 编辑

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 al,ds:[bx]
      mov es:[bp],al
      mov ax,4c00h
      int 21h
      code ends
      end start
指令mov es:[bp],al执行后es:[bp]中的值怎么和al中的不一样
最佳答案
2017-9-9 20:57:39
你看这个图,我把程序改一下,让es指到一个初始化的地址,那么你的问题就解决了。你现在有想明白问题的所在吗?
答案:就是因为b800:0这个地址你没有初始化,系统是自动分配值的,就是跑飞了,什么值都可能(当然这个是夸张),所以每次你中断调试都是重新刷新了一次系统,就没了。
懂了记得点“最佳答案”
捕获.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-9 20:57:39 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +5 鱼币

你看这个图,我把程序改一下,让es指到一个初始化的地址,那么你的问题就解决了。你现在有想明白问题的所在吗?
答案:就是因为b800:0这个地址你没有初始化,系统是自动分配值的,就是跑飞了,什么值都可能(当然这个是夸张),所以每次你中断调试都是重新刷新了一次系统,就没了。
懂了记得点“最佳答案”
捕获.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-9-9 21:19:04 | 显示全部楼层
xiaochen 发表于 2017-9-9 21:15
我刚学到第十章 还不知道中断呢

你的是单步调试,打错了,其实中断也会产生这样的效果,只是你看不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-9 21:19:39 | 显示全部楼层
xiaochen 发表于 2017-9-9 21:15
我刚学到第十章 还不知道中断呢

初始化就是把内存单元都变为0吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-9 21:13:20 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-9 20:57
你看这个图,我把程序改一下,让es指到一个初始化的地址,那么你的问题就解决了。你现在有想明白问题的所在 ...

怎么初始化呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-9 21:15:34 | 显示全部楼层

我刚学到第十章 还不知道中断呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-9 21:22:21 | 显示全部楼层
你源码中es指向了显存,那么这个es的内容就是你屏幕中对应位置所显示内容的数据,就是说,每一次你屏幕更新的时候,如果es所指向的显存中数据发生变化,那么es也会发生变化。   显存中的数据是根据屏幕更新后所在位置的内容所决定的,所以要不你就将es的位置设置的屏幕中间或者靠后,在使用  cls 对屏幕进行清屏,这样由于 屏幕中es的位置没有受到影响,所以就会可以得到你想看到的效果。


在你的源码中,是在屏幕第一行第一例进显示,显然,每次屏幕刷新之后,都会更改你的数据内容,你得不到想要的数据的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-9-9 21:36:15 | 显示全部楼层
你可以把源码调试一下,看看得到的es:[bp]中的内容是不是对应显存所在位置的ASCII值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-9 21:40:36 | 显示全部楼层
3-3 发表于 2017-9-9 21:36
你可以把源码调试一下,看看得到的es:中的内容是不是对应显存所在位置的ASCII值。

好的 太谢谢拉 学编程的哥们都讲究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-9 21:44:02 | 显示全部楼层
相互学习啊,毕竟学无止境。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-9 21:47:39 | 显示全部楼层
3-3 发表于 2017-9-9 21:44
相互学习啊,毕竟学无止境。

哥们 几点睡呀 我还有个问题不明白一会儿 还想再发个问题贴 你帮我在看一下被
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-9 21:53:17 | 显示全部楼层
好,发吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-9 21:55:32 | 显示全部楼层

谢拉 我先编下 马上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 16:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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