当前位置: 首页 > news >正文

信誉好的邢台做网站鄂州网约车

信誉好的邢台做网站,鄂州网约车,长沙3合1网站建设公司,爱站网影视排行榜续#xff1a;将基于Nasm汇编的打字小游戏#xff0c;移植到DOSBox 文章目录 续#xff1a;将基于Nasm汇编的打字小游戏#xff0c;移植到DOSBox前情提要细说1 编译2 程序入口3 定位段 运行体验 前情提要 上一篇#xff1a;【编程实践】黑框框里的打字小游戏#xff0c;但…续将基于Nasm汇编的打字小游戏移植到DOSBox 文章目录 续将基于Nasm汇编的打字小游戏移植到DOSBox前情提要细说1 编译2 程序入口3 定位段 运行体验 前情提要 上一篇【编程实践】黑框框里的打字小游戏但是汇编语言-CSDN博客 在上一篇文章中我对这个小程序进行了介绍但由于运行环境的安装比较复杂估计没有谁会将我的代码跑起来可那样实在是太遗憾了。学习过汇编语言的你大概率是使用过DOSBox的为此我献祭了2小时的宝贵生命成功地将代码在DOS上跑起来了。 如果对具体移植过程不感兴趣可以直接跳到运行体验部分。 细说 上文的虚拟机环境和DOSBox都支持8086汇编就换个地方运行能遇到什么麻烦麻烦就是多了DOS操作系统的存在现在我不需要自己编程从磁盘加载用户程序的引导程序了这个事情换由DOS操作系统来做可是我不太明白DOS需要我提供什么。 1 编译 首先我尝试着将曾经编译的typing.bin直接在DOSBox中运行期待它能识别出我代码里的头部信息正常地加载我的代码并将cpu的控制权交出来。然而它并不认.bin后缀的程序Illegal command: typing.bin。于是我搜索到了一篇博客并欣喜地发现它的代码是可以正常运行的。 参考DOSBox下编译和运行NASM代码_nasm dosbox-CSDN博客 原来是需要编译成.com文件 nasm -f bin typing.asm -o typing.com # 在本机命令行窗口中typing.com # 在DOSBox中2 程序入口 DOS系统如何知道我的程序从哪里开始执行呢毕竟我源代码中起始是一个头部段而不是代码段。答案是它什么也不知道只会从源代码的第一行开始执行所以我在源码的开头添加了一条跳转指令 org 0x0100 ;DOS系统会创建一个PSP数据区 jmp section.code.start那org 0x0100是什么可以参考下面另一个博主的文章。它是在编译阶段发挥作用的伪指令简单点说就是让标号能够获取到正确的偏移地址。引用标号时本来是获取标号所在处的汇编地址与程序开头的相对地址程序第一条指令的汇编地址是0但被DOS加载后程序第一条指令的偏移地址就变成了0x0100因为前面256个字节被PSP占据。而org 0x0100会让你在引用标号时自动加上0x0100。 补充如果在段中指定了vstart0那么段内的标号被引用时仍然是段内偏移地址而不会加上0x0100。 此时逻辑地址cs:0000指向的是PSPcs:0100指向的才是程序第一条指令。不过org 0x0100是为后面定位代码段和数据段服务的写与不写都对依据位移的jmp指令没有影响。 参考NASM的ORG 0100h的实际含义_org 0100h指令是什么意思-CSDN博客 下面这张图可能更加直观一点 3 定位段 3.1 定位数据段 这件事情在Nasm中要比Masm麻烦因为Masm可以直接获取一个段的段地址而Nasm中的section.段名.start只能获取到段的汇编地址。我想让数据段寄存器ds指向数据段还需要将获取的汇编地址除以4才得到段地址。这里的除操作可以使用右移位指令shr替代。 ;1 将ds指向数据段 mov ax, section.data.start shr ax, 4mov bx, cs add ax, bx mov ds, ax 3.2 定位代码段 因为在程序开头使用了jmp指令即便不将cs定位到代码段大部分代码也可以正常执行除了键盘中断例程。中断例程的代码逻辑当然没有什么问题毕竟之前都能正常运行只是中断向量表的填写出问题了问题代码片段如下 cli mov word [9*4], int9_new mov word [9*42], cs sti 回想一下标号int9_new是个代码段的段内偏移地址可cs指向的都不是代码段这能从中断向量表找到中断例程才怪。定位代码段的操作与前面定位数据段类似但必须同时更改cs和ip寄存器因为cs:ip永远指向运行的下一条指令的地址。 ;2 将cs指向代码段, 并将ip指向程序的正式开始start标号 mov ax, section.code.start shr ax, 4mov bx, cs add ax, bx mov free[2], ax mov word free[0], start jmp far [free]运行体验 Gitee获取代码清风莫追/Typing_asm (gitee.com) 我在代码仓库的dos文件夹中已经提供了编译好的程序typing.com如果你已经安装了DOSBox的话那么可以直接运行它了
http://www.w-s-a.com/news/163397/

相关文章:

  • winserver2008上用iis发布网站嵊州网站制作
  • 网站内页权重怎么查辽宁建设工程信息网怎么上传业绩
  • 丰都网站建设价格镇江网站制作费用
  • app手机网站建设黄网站建设定制开发服务
  • 百度网盘app下载徐州优化网站建设
  • 附近网站电脑培训班展台设计方案介绍
  • 河南便宜网站建设价格低上海高端室内设计
  • 保险网站有哪些平台wordpress会员vip购买扩展
  • 网站怎么做图片转换广州车陂网站建设公司
  • 下载flash网站网站设计书的结构
  • 水利建设公共服务平台网站放心网络营销定制
  • 设计网站过程wordpress+分页静态
  • 临海网站制作好了如何上线如果安装wordpress
  • 长沙 学校网站建设网站制作价格上海
  • 九江网站推广徽hyhyk1国家住房部和城乡建设部 网站首页
  • 阿克苏网站建设咨询动漫设计与制作属于什么大类
  • 网站编辑做多久可以升职wordpress版权修改
  • 网站开发维护成本计算国外外贸平台
  • 简单的招聘网站怎么做购物网站功能报价
  • 哪个网站做中高端衣服建设自己网站的流程
  • 网站建设概况做网站的是怎么赚钱的
  • 网站发布信息的基本流程现在都不用dw做网站了吗
  • 赣州热门网站深圳龙岗做网站的公司
  • 中国最大的建站平台广告传媒公司取名
  • 深圳网站设计公司专业吗学动漫设计后悔死了
  • 企业网站形象建设网站开发入职转正申请书
  • 网站设计步骤济南建设网中标公告
  • 石佛营网站建设wordpress关健词
  • 您的网站空间即将过期建站 discuz
  • 上海简站商贸有限公司福州哪家专业网站设计制作最好