汇编简单介绍(一)

简单知识背景

cpu组成:
  • 运算器进行运算处理
  • 寄存器用来存储数据
  • 控制器控制各个器件工作
  • 内部总线进行连接

例如一个常规的数值加法操作,首先需要cpu通过地址找到对应的内存地址,然后发送读指令,将对应地址的内存数据读取到寄存器,然后通过cpu的加法运算器进行加法运算,并将结果保存在寄存器中,最后再放回内存中。

其中寄存器很重要,为什么cpu不直接读取内存,计算写到内存,是因为寄存器的读取速度更快,每次运算都经过内存,会对cpu数据的io瓶颈,所以需要先将数据存放在寄存器中,经过大量的加减乘除运算,得到最终结果后再写入内存中。

寄存器全部都是用来存储数据的,根据存储信息的用途不同而进行分类,首先是通用寄存器,用来存放普通数据。

在8086中AX,BX,CX,DX都是通用寄存器,可以存放16位数。另外每个寄存器又可以分成高位和低位2个寄存器使用,例如AX可以分成AH,AL,BX可以分为BH,BL


image.png
8086寻址与段寄存器:

8086出于cpu寻址范围不够以及地址灵活管理的需要采用:段地址16+偏移地址=物理地址的方式进行寻址,例如:2000H16+1F60H = 21F60H(H代表16进制)

这样管理的好处是:可以将连续的内存地址,根据段地址分成不同段,方便按段进行管理,例如可以把数据和代码分别存放在不同段里面,各自进行管理

在内存中的数据全部都是1010这样的数字,是无法判断到底这片内存区域存放的是数据,还是代码。需要引入cs,ip寄存器。cs指向代码段地址,ip指向代码段的偏移地址,cpu永远都是执行cs:ip位置的代码,然后将ip+=指令长度,这样就可以一句一句的执行下去了。
例如:当cs=2000H,ip=1F60H,cpu把21F60H位置的数据当做代码执行

8086调试工具在mac上面的安装及使用:
安装

1,在mac上面安装8086模拟器

brew install dosbox --cask

2,下载调试工具链接,提取码: 428y
3,打开dosbox

image.png

4,mount调试工具,mount c $path,最后的路径填写下载的调试工具的路径
image.png

5,输入c:,然后回车,切换到盘符c下面,然后输入dir回车,可以看见对应的调试工具文件下面的文件
image.png

debug使用

1,输入debug,回车,可以进入调试模式


image.png

2,然后输入r,回车,可以显示8086各个寄存器的数据

image.png

3,上图,可以看出cs=073f,ip=0100的,将此处将要执行的代码通a指令改下面执行逻辑就可退出debug

mov ax,4c00
int 21h
image.png

debug 的使用

R 查看、改变 CPU 寄存器的内容
D 查看内存中的内容
E 改写内存中的内容
U 将内存中的机器指令翻译成汇编指令
T 执行一条机器指令
A 以汇编指令的格式在内存中写入一条机器指令

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 为什么要了解汇编? 了解汇编语言能够更加深入的理解高级语言的本质,彻底理解之前只是知道却又不清楚为什么的知识,比如...
    喵子G阅读 2,120评论 0 1
  • 学习汇编 这篇文章用来记录王爽版8086cpu的学习历程 两个重要的知识点 学习汇编语言,首先必须了解两个知识点:...
    齐木楠雄_阅读 892评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 8,019评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,994评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 3,619评论 1 1

友情链接更多精彩内容