寒假重学汇编-1

写在最前面

以下内容所用到的实验工具这里放出链接:王爽汇编语言工具包

寒假本来想从0开始写一个操作系统,但是汇编语言上遇到了困难,于是重新学起了汇编语言,现在把一些零碎的笔记记录在这里

寄存器:CPU中可以存放地址信息、数据信息等的地方。

汇编程序员就是通过汇编语言的汇编指令去修改寄存器中的内容,从而控制CPU,就可以控制整个计算机了。

CPU内部有保存地址信息和数据信息的地方——寄存器。
CPU通过端口号去访问鼠标、键盘等;通过内存地址去访问内存条、显存、ROM等;

寄存器

AX BX CX DX,这四个寄存器有一个特殊的地方,是其他寄存器所没有的。它们是通用寄存器,用来存放数据的的数据寄存器(16位)。这些寄存器可以各自分割为2个8位寄存器:
AX = AH + AL,AX的高8位构成了AH寄存器,低8位构成了AL寄存器,范围 0x00 ~ 0xFF
BX = BH + BL
CX = CH + CL
DX = DH + DL

BX也可以被当作位偏移地址寄存器
CX也有其他作用
AX,DX用来处理数据的

为什么要有8位寄存器呢?
是为了兼容。8086CPU,8位寄存器。为了保证以前编写的程序稍加修改就可以运行在8086CPU上。

内存的最小单位?字节,8bit。CPU从内存中读取一个字节(8bit)字节型数据。此8位数据存放在8位寄存器中。

数据线呢?16根数据线,数据线的宽度决定了CPU一次性能够读取多长的数据。8086CPU一次性可以处理2种尺寸的数据。

字节型数据	byte 8bit			放在8位寄存器中
字型数据		2 byte 16 bit 		放在16位寄存器中

DS ES SS CS:如下图所示,这几个寄存器都是冒号左边的一种地址信息
在这里插入图片描述

段地址寄存器:偏移地址寄存器
	ds			sp
	es			bp
	ss			si
	cs			di
				ip
				bx

8086CPU20根地址线。地址线的数量,决定了CPU的寻址能力。
16位寄存器无法满足20根数据线的要求,会造成浪费,于是,设计了地址加法器:地址的计算方式

段地址 x 16(10H) + 偏移地址 = 物理地址
段地址 x 16 = 基础地址
基础地址 + 偏移地址 =物理地址

段地址			偏移地址
F230H x 10H		C8H			=	F23C8H

指令从哪里来?cs:ip
数据从哪里来?ds

CPU怎么区分指令和数据

在这里插入图片描述
如上图,u指令,将某个内存地址开始的字节,全部当成指令;d指令,将某个内存地址开始的字节,全部当做数据
7403 E99700 B80500…依次对应于74 03 E9 97 00 B8 05 00…

IP寄存器和指令有关

dosbox命令,修改相应寄存器的值进行实验:
-r ds
-r es
-r ss
-r cs
如下图,可知冒号左边的寄存器为cs

在这里插入图片描述
8086CPU中,在任意时刻,CPU将CS:IP所指向的内容全部当做指令来执行

在内存中,指令和数据是没有任何区别的,都是二进制信息。CPU只有在工作的时候,才将有的信息当作指令,有的信息当作数据。

CPU将CS:IP指向的内存单元中的内容当作指令

小实验

在这里插入图片描述
将上面的机器码,用e指令输入到2000:0处,如下:
在这里插入图片描述
然后查看2000:0处的信息:
在这里插入图片描述
输入u指令(翻译成汇编),查看该内存处相应的汇编指令:
在这里插入图片描述
接下来修改cs:ip执行上面的汇编:
在这里插入图片描述
执行:
在这里插入图片描述
指令和数据在内存中有区别吗?是没有区别的。CPU中的CS段地址寄存器和IP这个偏移地址寄存器组合的时候,从中读取内容,当作指令来执行。

CS IP决定了CPU从哪里开始读取指令。

IP寄存器和指令长度的关系

指令是有长度的,一条指令可以由多个字节构成

指令执行的过程
1、CPU从CS:IP 所指向的内存单元读取指令, 存放到 指令缓存器中.
2、IP = IP + 所读指令的长度,从而指向 下一条指令。
3、执行指令缓存器中的内容,回到步骤1

汇编修改IP

mov ip,0 是不允许的,可以这样修改:
mov ax,2222
jmp ax

debug调试工具

r 可以查看和改变寄存器中的内容
d 可以查看内存中的内容
u 可以将内存中的机器指令翻译成汇编指令
a 可以以汇编在内存中写入
t 执行当前CS:IP所指令的机器指令
e 可以改写内存中的内容

所用到的实验工具这里放出链接:王爽汇编语言工具包

发布了23 篇原创文章 · 获赞 13 · 访问量 3000

猜你喜欢

转载自blog.csdn.net/qq_29856169/article/details/104021230
今日推荐