ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

汇编语言 学习记录01

2022-03-28 22:31:33  阅读:155  来源: 互联网

标签:01 记录 汇编语言 IP 16 地址 指令 寄存器 ax


第一章 基础知识预备
cpu进行读写时,将各类存储器看作同一个逻辑存储器。
每个物理存储器都在这个逻辑存储器中占有一个地址段(地址空间)
内存地址空间的大小受cpu地址总线宽度的限制。
也就是说,逻辑存储器==内存地址空间。


第二章 寄存器
在cpu中,
运算器进行信息处理;
寄存器进行信息存储;
控制器控制器件进行工作;
内部总线(不同于外部总线)连接各种器件,在它们之间进行数据的传送。
在其中,寄存器是cpu中程序员可以用指令读写的部件。

以ax为例,低8位(0~7)构成了al寄存器,高8位(8~16)构成了ah寄存器。二者可以独立使用。
高位字节+低位字节,通过十六进制的方式一边放置两位十六进制数,便于直观分析。

 

2.3 几条汇编指令
mov ax,18 将18送入寄存器ax, 高级语言语法:ax=18
add ax,8 将寄存器ax中的数值加8 ax=ax+8
mov ax,bx 将寄存器bx中的数据送入寄存器ax中 ax=bx
add ax,bx 将ax和bx相加,送入ax中 ax=ax+bx
注意:cpu在执行运算时,如果ah和al分开写,那么cpu将会认为此时ah和al是两个不相关的寄存器。

 

2.5 16位结构的cpu
xx位结构,如16位结构的cpu代表着:1.运算器一次最多可以处理16位的数据;
2.寄存器的最大宽度为16位;
3.寄存器和运算器之间的通路为16位。

 

2.6 8086cpu给出物理地址的方法
相关部件提供两个16位的地址,段地址和偏移地址;
通过内部总线送入地址加法器,在其中合并成20位的物理地址;
通过内部总线将20位物理地址送入输入输出控制电路;
将20位物理地址送入地址总线;
最终被传输至存储器;

其中,采用物理地址=段地址*16+偏移地址的方法合并
= 2^16*2^4+偏移地址
十六进制下,四位十六进制变为五位十六进制,再和偏移地址相加。
更一般的说,这种寻址功能是 基础地址+偏移地址=物理地址。

结论:cpu可以用不同的段地址和偏移地址形成同一个物理地址。
只需要满足 段地址*16+偏移地址结果相同即可。
给定一个段地址,仅通过变化偏移地址来进行寻址,最多可定位2^16=64KB个内存单元(一个内存单元可以存储一个Byte)

 

2.10 CS和IP
CS和IP是8086中最关键的寄存器,指示了CPU当前要读取指令的地址。
CS是代码段寄存器,IP是指令指针寄存器。
设CS中的内容为M,IP中的内容为N,则CPU将会从内存M*16+N单元开始,读取一条指令并执行。
任意时刻CPU将CS:IP指向的内容当作指令执行。

IP=IP+所读取指令的长度,从而指向下一条指令

如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必定被CS:IP指向过。

*** 如何来改变CS、IP中的值?其它寄存器中的值?
mov指令也称传送指令,可以用mov来改变大部分8086寄存器的值,如AX、BX、CX;
但是,mov指令不能用于设置CS、IP中的值(8086不提供,为了将执行指令取数据和执行指令改变指令自身分离开)
能改变CS、IP的指令统称为转移指令,最简单的修改CS、IP的指令是:jmp指令。
形式:jmp 段地址:偏移地址
若仅想修改IP的内容,可用 jmp 某一合法寄存器 的指令来完成。(局部性原理?)
所以,jmp ax在含义上可以理解为 mov IP,ax

 

标签:01,记录,汇编语言,IP,16,地址,指令,寄存器,ax
来源: https://www.cnblogs.com/FantasyLee/p/16069500.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有