九章:转移指令的原理
可以修改IP,或同时修改CS和IP的指令统称为转移指令,转移指令就是可以控制CPU执行内存中某处代码的指令。
8086CPU的转移行为有以下几类:
.只修改IP时,称为段内转移,比如:jmp ax.
.同时修改CS和IP时,称为段间转移,比如:jmp 1000:0
根据对IP修改风范围不同,段内转移又分为:短转移和近转移。
.短转移IP的修改范围为-128~127
.近转移IP的修改范围为-32768~32767
8086CPU的转移指令分为以下几类。
.无条件的转移指令(如:jmp)
.条件转移指令
.循环指令(如:loop)...
[2013-12-08 21:16] 第九章 (答案属于个人解答,如有问题请留言指教交流,谢谢!O(∩_∩)O~)
阅读全文 |
评论次数(0) |
浏览次数(608) |
所属类型(总结)
[2013-12-08 21:14] 第八章 (答案属于个人解答,如有问题请留言指教交流,谢谢!O(∩_∩)O~)
八章:数据处理的两个基本问题
(1)处理的数据在什么地方?
(2)要处理的数据有多长?
寄存器:(register)
段寄存器:segment register
reg集合:ax bx cx dx ah al bh bl ch cl dh dl sp bp si di;
sreg集合:ds ss cs es
8.1 bx、si、di 和bp
1、在8086cpu中,只有这4个寄存器可以用在"[...]"中来进行内存单元的寻址。
2、在[...]中,这4个寄存器可以单个出现,或只能以4中组合出现:bx和si、bx和di、bp和si、bp和di。
3、只要在[.....
(1)处理的数据在什么地方?
(2)要处理的数据有多长?
寄存器:(register)
段寄存器:segment register
reg集合:ax bx cx dx ah al bh bl ch cl dh dl sp bp si di;
sreg集合:ds ss cs es
8.1 bx、si、di 和bp
1、在8086cpu中,只有这4个寄存器可以用在"[...]"中来进行内存单元的寻址。
2、在[...]中,这4个寄存器可以单个出现,或只能以4中组合出现:bx和si、bx和di、bp和si、bp和di。
3、只要在[.....
阅读全文 |
评论次数(0) |
浏览次数(492) |
所属类型(总结)
[2013-12-08 21:10] 第六章 (答案属于个人解答,如有问题请留言指教交流,谢谢!O(∩_∩)O~)
包含多个段的程序:
如果我们需要的空间超过256个字节该怎么办?
程序取得空间的方法有2种:一是在加载程序的时候为程序分配,再就是程序在执行的过程中向系统申请。本书不讨论第二种方法。
1、在代码段中使用数据
例:累加 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
源程序:
assume cs:code
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
mov bx,0
mov ax,0
mov cx,8
s:add...
如果我们需要的空间超过256个字节该怎么办?
程序取得空间的方法有2种:一是在加载程序的时候为程序分配,再就是程序在执行的过程中向系统申请。本书不讨论第二种方法。
1、在代码段中使用数据
例:累加 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
源程序:
assume cs:code
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
mov bx,0
mov ax,0
mov cx,8
s:add...
阅读全文 |
评论次数(0) |
浏览次数(518) |
所属类型(总结)
[2013-11-07 20:33] 第5章总结、笔记
1、[bx]和内存单元的描述
[bx]表示一个内存单元,它的偏移地址在bx 中,,比如 mov al,[bx];
loop 指令:代表循环。
2、描述性符号:“()”
(ax)表示ax当中的内容,(al)表示al当中的内容。(ds)表示ds当中的内容,(20000H)表示内存20000H单元的内容。
“()”当中的元素可以有3中类型:a、寄存器名。b、段寄存器。c、内存单元的物理地址(一个20位数据)。
“(X)”表示的数据有两种类型:a、字节。b、字。是哪种类型由寄存器名和运算决定。
(al)为字节型,(ax)为字型。al=(20000H)为字节型,,a...
[bx]表示一个内存单元,它的偏移地址在bx 中,,比如 mov al,[bx];
loop 指令:代表循环。
2、描述性符号:“()”
(ax)表示ax当中的内容,(al)表示al当中的内容。(ds)表示ds当中的内容,(20000H)表示内存20000H单元的内容。
“()”当中的元素可以有3中类型:a、寄存器名。b、段寄存器。c、内存单元的物理地址(一个20位数据)。
“(X)”表示的数据有两种类型:a、字节。b、字。是哪种类型由寄存器名和运算决定。
(al)为字节型,(ax)为字型。al=(20000H)为字节型,,a...
阅读全文 |
评论次数(0) |
浏览次数(719) |
所属类型(总结)
[2013-09-09 15:28] 第四章总结:
源程序:segment 和 ends :是一成对的伪指令,写程序时必须用到。
功能:定义一个数据段,segment 说明段的开始 ends 说明段的结束。
格式:
段名 segment
:
:
段名 ends
程序:[段1][段2]...[段n]
[段*]:[代码][数据][栈空间]。
end:一个汇编程序的结束标记。
assume:【假设】它假设某一段寄存器和程序中的某一个用segment...ends 定义的段相关联起来。
如:assume cs:codesg
codesg segment
...
功能:定义一个数据段,segment 说明段的开始 ends 说明段的结束。
格式:
段名 segment
:
:
段名 ends
程序:[段1][段2]...[段n]
[段*]:[代码][数据][栈空间]。
end:一个汇编程序的结束标记。
assume:【假设】它假设某一段寄存器和程序中的某一个用segment...ends 定义的段相关联起来。
如:assume cs:codesg
codesg segment
...
阅读全文 |
评论次数(0) |
浏览次数(605) |
所属类型(总结)
[2013-07-22 21:55] 最近几天的笔记总结:
8086CPU是16位结构的CPU
结构特性:
a 运算一次最多可以处理16位的数据,也就是2个字节,2Byte。
b 寄存器的最大宽度为16位,也就是2个字节,2Byte,一个字word。
c 寄存器和运算器之间的通路为16位。应该是允许通过的字节是2个字节,2Byte。
8086CPU给出物理地址的方法:
8086CPU的地址总线为20位,也就有1MB的寻址能力。但因为内部是16位结构。所以在8086CPU内部采用将 两个16位地址合成 一个20位的物理地址的方法。
规律:
(1)一个数据的二进制形式左移1位,相当于该数据乘以2;
...
结构特性:
a 运算一次最多可以处理16位的数据,也就是2个字节,2Byte。
b 寄存器的最大宽度为16位,也就是2个字节,2Byte,一个字word。
c 寄存器和运算器之间的通路为16位。应该是允许通过的字节是2个字节,2Byte。
8086CPU给出物理地址的方法:
8086CPU的地址总线为20位,也就有1MB的寻址能力。但因为内部是16位结构。所以在8086CPU内部采用将 两个16位地址合成 一个20位的物理地址的方法。
规律:
(1)一个数据的二进制形式左移1位,相当于该数据乘以2;
...
阅读全文 |
评论次数(0) |
浏览次数(552) |
所属类型(总结)
页码数(1):
1