assume cs:程序入口标号

标号1 segment
数据块
……
标号1 ends

标号2 segment
……
……
标号2 ends

程序入口标号 segment
代码块
……
x:
代码块
……
程序入口标号 ends

end 标号x;程序入口

标号:数据块(代码块)在内存中的段地址
(标号·16+0000h):数据块(代码块)在内存中的起始地址
设数据块(代码块)的大小为x字节
则数据块(代码块)的终止地址为((标号+x / 16+x % 16 && 1)·16-0001h):/ 为整数除法,% 为取余符号
给数据块(代码块)分配内存时,都是以16字节的整数倍进行分配的,所以终止地址如上所示

在程序编译过程中,编译过程是从上往下编译,程序块可能会用到数据块或其他程序块,所以会用到的数据应该先于入口程序编译。
每一个数据块(代码块)都需要一个segment作为开始 和 ends作为结束

数据块与代码块在CPU看来都是等同(在内存中)的,所以需要一个标号来让CPU区别两者,程序末尾的“end 标号x”就是这样的标号。当执行到这一步时,cs:ip(指令指针)会指向标号x所在的位置,开始执行

8086CPU写汇编的规则相关推荐

  1. 一步步点亮LED3_从零开始手写汇编点亮LED

    1.GPxCON.GPxDAT寄存器分析 GPJ0端口一共有8个引脚,分别记作:GPJ0_0 ~ GPJ0_7,相关重要寄存器就是GPJ0CON和GPJ0DAT GPJ0CON寄存器中设置8个引脚的工 ...

  2. 【汇编语言】理解8086CPU中,不同类型的寄存器和汇编指令规则的联系(会继续更新)

    0 前言 你是否因为汇编指令繁杂的规则而苦恼呢?作者本人也很烦,因为往往教材中只告诉我们规则,却不告诉我们为什么,没有原因就直接记忆,负担太大,后期灵活运用也增添阻力,因此,我经过自己的思考去为你解释 ...

  3. 在Mac上写汇编!(一)helloworld nasm on macos

    参考和感谢: https://blog.csdn.net/s793223706/article/details/82469971 教你在Mac上写汇编 https://stackoverflow.co ...

  4. c语言编译load,用C语言写汇编代码之LoadLibrary

    用C语言写汇编代码之LoadLibrary 2006-6-6 23:29 9868 用C语言写汇编代码之LoadLibrary 2006-6-6 23:29 9868 用C写一个加载msvcrt.dl ...

  5. #跟我一起写 Makefile# 隐含规则使用隐含规则

    目录 隐含规则 使用隐含规则 隐含规则 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Wind ...

  6. mov 指令用c语言写,汇编总结:mov指令

    mov指令的作用: mov指令可能是汇编里用的最多的指令了,完成c语言里的赋值. mov指令种类: 1.普通的mov指令 2.做符号扩展的movs 3.做零扩展的movz 1.普通mov的种类有: m ...

  7. 反外挂之手写汇编锁血功能

    第一步 找到生命值地址 第二步 找到修改生命值的汇编代码 第二步 分析汇编 通过分析汇编得到  是这一句代码改写了生命值. 第三步 开始代码修改 通过CE分配内存得到一段内存地址 0x02310000 ...

  8. Linux环境下使用dosemu写汇编

    汇编语言学习篇2--MASM的环境搭建(win10与Ubuntu1604下的配置)[有问题,待更正] 8086汇编语言入门-HelloWorld 参考链接 DOSBox+MASM搭建汇编环境 百度云 ...

  9. 8086CPU常见汇编指令、debug命令

    一条指令对应的两个操作数位数必须一致 汇编指令: 1.mov x,y 传送:y到x x,y: 寄存器,数据 寄存器,寄存器 寄存器,内存物理地址 内存物理地址,寄存器 内存物理地址,数据 寄存器,内存 ...

最新文章

  1. [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  2. 进fastreboot
  3. MongoDB基本命令总结
  4. sap 彻底删除物料主档
  5. os.walk获取同级目录具有随机性
  6. leetcode 834. 树中距离之和(dp)
  7. python中_str_使用方法
  8. 获取CPU利用率 系统内存和进程内存
  9. 理解 CI 和 CD 之间的区别(翻译)
  10. 创建索引时,键列位置的重要性
  11. 【计算机网络】IPv4 NAT
  12. 股东其实对公司情况一无所知,唯一办法是追责
  13. objdump选项解释
  14. linux下exe软件反编译工具下载,ilspy.exe
  15. 部分PTA自测题答案(仅参考)
  16. 2.4g低功耗SI24R1校园答题器
  17. 使用JS-SDK自定义微信分享效果
  18. unicode编码转gb2312编码并显示中文(cjava)
  19. 【信奥赛一本通】1253:抓住那头牛(详细代码)
  20. 《深入理解计算机网络》迷你书

热门文章

  1. poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
  2. 推荐25个非常优秀的网页表单设计案例
  3. [python] 常用正则表达式爬取网页信息及分析HTML标签总结
  4. C# 系统应用之调用SDelete程序粉碎文件及基础原理知识
  5. Swift之深入解析如何将代码添加为自定义LLDB命令
  6. JavaScript禁用鼠标右键菜单
  7. JAVA运算符\操作符
  8. 【Java8】堆栈/队列/数组/链表/红黑树,List/set子接口,hashcode/hashset,Map/内部接口,/统计字符个数,debug,斗地主,Collections,TreeSet
  9. 【Linux网络编程】组播
  10. 【Linux】一步一步学Linux——setfacl命令(117)