1.可以修改IP,或同时修改CS和IP的指令统称为转移指令,转移指令就是可以控制CPU执行内存中某处代码的指令。
2.只修改IP,称为段内转移,段内转移又分为:短转移和近转移,短转移IP的修改范围为-128~127.近转移IP的修改范围为-32768~32767;同时修改IP和CS,称为段间转移。
3.JMP依据位移进行转移
JMP SHORT 标号 实现的是短转移 功能:(IP)=(IP)+8位位移
1)8位位移=标号处的地址-JMP指令后的第一个字节的地址
2)SHORT指明此处的位移为8位位移
3)8位位移的范围是-128~127,用补码表示
4)8位位移...


- [游客] 嗯。总结的很不错。尤其是4、7这两处,很多兄弟有时候还犯糊涂呢。 不错。 02/05 16:23
- [crazyman] 总结的很好啊。 02/03 11:26
- [tomato] 很正确!继续努力! 01/23 12:04
- [crazyman] 总结的不错。 一起加油。 01/20 11:46
- [younggay] 心得丢失了?? 什么意思呀? 01/19 17:04
- [younggay] 这次楼上的说对了。看书要仔细要。 01/19 17:00
- [qiongshuai] 哦,谢谢提醒,太粗心了 CPU寻址范围为0001:0H~1000:FH 01/18 21:51
- [qiongshuai] 呵呵还是有遗漏啊。谢谢指出。 书上的意思是:先改变IP再执行指令。 1)IP=IP+3(修改 01/18 18:36
- [游客] 笔记要过心。 01/18 17:55
- [游客] 第一题不对。 寻址范围是指的物理地址范围,不是偏移地址的范围。 01/18 17:54
[2009-02-28 10:01] 第九章
阅读全文 |
评论次数(0) |
浏览次数(601) |
所属类型(自我总结)
[2009-02-14 14:45] 第八章
1.REG表示一个寄存器。SREG表示一个段寄存器。
REG的集合包括:AX,BX,CX,DX,AH,AL,BH,BL,CH,CL,DH,DL,SP,BP,SI,DI
SREG的集合包括:DS,SS,CS,ES
2.BX,SI,DI,BP
1)在8086CPU中,只有这4个寄存器可以用在“[...]”中来进行内存单元的寻址。
2)在“[...]”中,这4个寄存器可以单个出现,或者只能以4种组合出现:BX和SI,BX和DI,BP和SI,BP和DI.
3)只要在“[...]”中使用寄存器BP,而指令中没有显性的给出段地址,段地址就默认在SS中。(这一点有时会忘,注意一下...
REG的集合包括:AX,BX,CX,DX,AH,AL,BH,BL,CH,CL,DH,DL,SP,BP,SI,DI
SREG的集合包括:DS,SS,CS,ES
2.BX,SI,DI,BP
1)在8086CPU中,只有这4个寄存器可以用在“[...]”中来进行内存单元的寻址。
2)在“[...]”中,这4个寄存器可以单个出现,或者只能以4种组合出现:BX和SI,BX和DI,BP和SI,BP和DI.
3)只要在“[...]”中使用寄存器BP,而指令中没有显性的给出段地址,段地址就默认在SS中。(这一点有时会忘,注意一下...
阅读全文 |
评论次数(0) |
浏览次数(596) |
所属类型(自我总结)
[2009-02-14 10:35] 第七章
1.AND 指令:逻辑与指令,按位进行与运算,通过该指令可将操作对象的相应位设为0,其他位不变。
OR 指令:逻辑或指令,按位进行与运算,通过该指令可将操作对象的相应位设为1,其他位不变。
61H表示a,41H表示A,大写与小写之间相差20H,单引号‘’指明数据是以字符形式给出的。
2.[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata。通常可以用来进行数组的处理。
SI,DI和BX的功能相近的寄存器,SI和DI不能够分成两个8位寄存器来使用,SI通常当作源地址的偏移量,DI通常当作目的地址的偏移量。
3.[idata]用一个常量来表示地址,可用于直接定...
OR 指令:逻辑或指令,按位进行与运算,通过该指令可将操作对象的相应位设为1,其他位不变。
61H表示a,41H表示A,大写与小写之间相差20H,单引号‘’指明数据是以字符形式给出的。
2.[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata。通常可以用来进行数组的处理。
SI,DI和BX的功能相近的寄存器,SI和DI不能够分成两个8位寄存器来使用,SI通常当作源地址的偏移量,DI通常当作目的地址的偏移量。
3.[idata]用一个常量来表示地址,可用于直接定...
阅读全文 |
评论次数(0) |
浏览次数(527) |
所属类型(自我总结)
[2009-02-06 21:59] 第六章
1.程序取得所需空间的方法有两种,一是在加载程序的时候为程序分配,再就是程序在执行的过程中向系统申请。我们可以在程序中,定义我们希望处理的数据,这些数据就会被编译,连接程序作为程序的一部分写到可执行文件中。当可执行文件中的程序被加载入内存时,这些数据也同时被加载入内存中。与此同时,我们要处理的数据也就自然而然的获得了存储空间。
2.END的作用,除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。END START 说明了程序的入口,这个入口将被写入可执行文件的描述信息,可执行文件中的程序被加载入内存后,CPU的CS:IP被设置指向这个入口。
3.可执行文件中的描述信息...
2.END的作用,除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。END START 说明了程序的入口,这个入口将被写入可执行文件的描述信息,可执行文件中的程序被加载入内存后,CPU的CS:IP被设置指向这个入口。
3.可执行文件中的描述信息...
阅读全文 |
评论次数(0) |
浏览次数(681) |
所属类型(自我总结)
[2009-02-03 22:10] 第五章
1.完整的描述一个内存单元,需要两种信息:1)内存单元的地址。2)内存单元的长度(类型)。
2.在本章中[bx]主要用来表示一个内存单元,偏移地址在bx中。loop表示循环。
3.描述性符号“()”表示一个寄存器或一个内存单元中的内容。如:(ax)表示ax中的内容。“()”中的内容可以有3中类型:1)寄存器名;2)段寄存器名;3)内存单元的物理地址(一个20位数据)。“(x)”所表示的数据有两种类型:字节和字。到底是那种类型由寄存器名或具体的运算决定。
4.loop指令的格式:loop 标号 ,CPU执行loop指令的时候,要进行两步操作,1)(CX)=(CX)-1;2)判断...
2.在本章中[bx]主要用来表示一个内存单元,偏移地址在bx中。loop表示循环。
3.描述性符号“()”表示一个寄存器或一个内存单元中的内容。如:(ax)表示ax中的内容。“()”中的内容可以有3中类型:1)寄存器名;2)段寄存器名;3)内存单元的物理地址(一个20位数据)。“(x)”所表示的数据有两种类型:字节和字。到底是那种类型由寄存器名或具体的运算决定。
4.loop指令的格式:loop 标号 ,CPU执行loop指令的时候,要进行两步操作,1)(CX)=(CX)-1;2)判断...
阅读全文 |
评论次数(1) |
浏览次数(707) |
所属类型(自我总结)
[2009-01-22 11:13] 第四章
1.伪指令:没有对应的机器指令,最终不被CPU所执行,而是由编译器来执行指令的。
SEGMENT...ENDS是一对成对使用的伪指令,定义一个段,必须有一个段名来标识。
END标记整个程序的结束。
ASSUME将一段寄存器和程序中的某一个用SEGMENT...ENDS定义的段相关联。
标号:指代了一个地址,也是一个段的名称,这个段的名称最终将被编译连接程序处理为一个段的段地址。
2.
目的 相关指令 指令性质 指令执行者
通知编译器一个段结束 段名 ENDS 伪指令 编译时,编译器执行
通知编译器整个段结束 END ...
SEGMENT...ENDS是一对成对使用的伪指令,定义一个段,必须有一个段名来标识。
END标记整个程序的结束。
ASSUME将一段寄存器和程序中的某一个用SEGMENT...ENDS定义的段相关联。
标号:指代了一个地址,也是一个段的名称,这个段的名称最终将被编译连接程序处理为一个段的段地址。
2.
目的 相关指令 指令性质 指令执行者
通知编译器一个段结束 段名 ENDS 伪指令 编译时,编译器执行
通知编译器整个段结束 END ...
阅读全文 |
评论次数(1) |
浏览次数(729) |
所属类型(自我总结)
[2009-01-19 22:30] 第三章(3.1--3.5 | 3.6--3.10)
1.在内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),则一个字要用两个地址连续的内存单元来存放,这个字的低字节放在低地址单元,高字节存放在高地址单元。
2[]表示一个内存单元,[]中的数据表示内存单元的偏移地址。
3.MOV 寄存器,数据
MOV 寄存器,寄存器
MOV 寄存器,内存单元(可以互相交换)
MOV 段寄存器,寄存器(可以互相交换)
MOV 段寄存器,内存单元
SUB/ADD 寄存器,数据
SUB/ADD 寄存器,寄存器
SUB/ADD 寄存器,内存单元...
2[]表示一个内存单元,[]中的数据表示内存单元的偏移地址。
3.MOV 寄存器,数据
MOV 寄存器,寄存器
MOV 寄存器,内存单元(可以互相交换)
MOV 段寄存器,寄存器(可以互相交换)
MOV 段寄存器,内存单元
SUB/ADD 寄存器,数据
SUB/ADD 寄存器,寄存器
SUB/ADD 寄存器,内存单元...
阅读全文 |
评论次数(1) |
浏览次数(715) |
所属类型(自我总结)
[2009-01-18 17:00] 第二章(2.9--2.12)
1.段寄存器:CS,DS,SS,ES.当8086CPU要访问内存时由这4个段寄存器提供内存单元的段地址。
2.CS代码段寄存器,IP指令指针寄存器,设CS中的内容为M,IP中的内容为N,CPU将从M*16+N单元开始,读取一条指令并执行。
3.CPU将CS:IP的指向的内容当作指令执行。
4.8086CPU的工作过程简要描述如下:
1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2)IP=IP+所读取指令的长度,从而指向下一条指令
3)执行指令,转到步骤1,重复这个过程。
5.第一章留下的疑问,CPU根据什么将内存中的信息...
2.CS代码段寄存器,IP指令指针寄存器,设CS中的内容为M,IP中的内容为N,CPU将从M*16+N单元开始,读取一条指令并执行。
3.CPU将CS:IP的指向的内容当作指令执行。
4.8086CPU的工作过程简要描述如下:
1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2)IP=IP+所读取指令的长度,从而指向下一条指令
3)执行指令,转到步骤1,重复这个过程。
5.第一章留下的疑问,CPU根据什么将内存中的信息...
阅读全文 |
评论次数(1) |
浏览次数(307) |
所属类型(自我总结)
[2009-01-18 15:56] 第二章(2.4--2.9)
1.8086CPU是16位的结构,从内部结构来看,它只能送出16位的地址寻址能力64KB,但是对外部8086CPU有20位的地址总线寻址能力1MB。这里产生了矛盾,16位的地址怎么寻址20位的呢?在8086CPU内部使用了一种方法就是用两个16位地址合成一个20位的物理地址。而这两个16位的地址一个称为段地址,一个称为偏移地址。即公式:物理地址=段地址*16+偏移地址.
2.物理地址=段地址*16+偏移地址 的本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
3.段的概念:内存并没有分段,段的划分来自CPU,由...
2.物理地址=段地址*16+偏移地址 的本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
3.段的概念:内存并没有分段,段的划分来自CPU,由...
阅读全文 |
评论次数(1) |
浏览次数(489) |
所属类型(自我总结)
[2009-01-18 11:16] 第二章(2.1--2.3)
1.内部总线:实现CPU内部各个器件之间的数据交互。外部总线:实现CPU与外设之间的数据交互。CPU的内部组成:运算器,寄存器,控制器,内部总线,等。
1)运算器进行信息处理
2)寄存器进行信息存储(对于汇编程序员来说,寄存器是主要的部件)
3)控制器控制各种器件进行工作
4)内部总线连接各种器件,并在它们之间进行数据的传送
2.通用寄存器:AX,BX,CX,DX.这4个16位的寄存器都可以分为两个独立使用的8位寄存器来用:AH,AL;BH,BL;CH,CL;DH,DL.注意:当一个16位的通用寄存器被分为两个8位的寄存器使用的时
候,高8位和低8位...
1)运算器进行信息处理
2)寄存器进行信息存储(对于汇编程序员来说,寄存器是主要的部件)
3)控制器控制各种器件进行工作
4)内部总线连接各种器件,并在它们之间进行数据的传送
2.通用寄存器:AX,BX,CX,DX.这4个16位的寄存器都可以分为两个独立使用的8位寄存器来用:AH,AL;BH,BL;CH,CL;DH,DL.注意:当一个16位的通用寄存器被分为两个8位的寄存器使用的时
候,高8位和低8位...
阅读全文 |
评论次数(1) |
浏览次数(239) |
所属类型(自我总结)