3.6 栈
栈的这种操作规则被称为:LIFO(Last In First Out,后进先出)。
3.7 CPU提供的栈机制
8086CPU提供入栈和出栈指令,最基本的两个是 PUSH(入栈)和 POP(出栈)。
任意时刻,SS:SP 指向栈顶元素。
PUSH AX (SP=SP-2)
POP AX (SP=SP=2)
3.8 栈顶超界的问题
在执行push、pop指令时,要注意当栈满的时候再使用push指令入栈,或栈空时再使用pop指令出栈,都将发生栈顶超界问题。
3.9 push、pop指令
push 寄存器 将一个寄存器中的数据入栈...
- [aben126] 4 发现屏幕上会出现彩色图标。 07/17 13:53
- [aben126] 3 ,由于我用的是WIN 7 系统,所以用DEBUG做实验是装了VMware 在VMware上没找到 07/17 13:47
- [aben126] 2 求2的8次方 mov ax,1 add ax,ax jmp 2000:0003 共运 07/17 13:31
- [aben126] 谢谢,说实在的,我不做笔记不行,我学这个东西都快两个星期了,看过之后前面的就忘了差不多,没办法只好从 07/11 09:49
- [jkuncle] 要向你学习了,我都只做了点课后作业,从来没有做过学习笔记,难怪学到后面感觉越来越难 07/10 16:16
- [aben126] 再次感谢 capitelation 的讲解 注册日期:2013-06-25 18:18 06/28 08:29
- [aben126] 再次感谢 capitelation 的解答 坛里 有前辈帖子写的很详细的。最简单的例子就是比如只 06/27 18:36
[2013-08-11 10:28] 第三章 寄存器(内存访问)
阅读全文 |
评论次数(0) |
浏览次数(334) |
所属类型(学习笔记)
[2013-08-09 15:52] 第3章 寄存器(内存访问) 3.1
1,
IP 命令 寄存器结果
0 mov ax,1
3 mov ds,ax
5 mov ax,[0000] ax=2662
8 mov bx,[0000] bx=e626
c mov ax,bx ax=e626
e mov ax,[0000] ax=2662
11 mov bx,[0000] bx=d6e6
15 add ax,bx ax=fd48
17 add ax,[0004] ax=2c14
1b mov ax,0 ax=0
1e mov al,[0002...
IP 命令 寄存器结果
0 mov ax,1
3 mov ds,ax
5 mov ax,[0000] ax=2662
8 mov bx,[0000] bx=e626
c mov ax,bx ax=e626
e mov ax,[0000] ax=2662
11 mov bx,[0000] bx=d6e6
15 add ax,bx ax=fd48
17 add ax,[0004] ax=2c14
1b mov ax,0 ax=0
1e mov al,[0002...
阅读全文 |
评论次数(0) |
浏览次数(323) |
所属类型(汇编作业)
[2013-08-09 08:30] 第3章 寄存器(内存访问)
3.1 内存中字符的存储
在内存中时,一个内存单元是由两个连续的字节单元组成的。(低位跟高位)
我们将起始地址为N的字单元简称为N地址字单元。
任何两个连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。
3.2 DS和【address】
8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
MOV AL,[0]
指令解读:
MOV 寄存器名(AL),内存单元地址(【0】这0表示内存单元的偏移地址)
8086CPU不支持将数据直接送人段寄存器的操作。
3.3 字的传...
在内存中时,一个内存单元是由两个连续的字节单元组成的。(低位跟高位)
我们将起始地址为N的字单元简称为N地址字单元。
任何两个连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。
3.2 DS和【address】
8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
MOV AL,[0]
指令解读:
MOV 寄存器名(AL),内存单元地址(【0】这0表示内存单元的偏移地址)
8086CPU不支持将数据直接送人段寄存器的操作。
3.3 字的传...
阅读全文 |
评论次数(0) |
浏览次数(287) |
所属类型(学习笔记)
[2013-07-17 13:27] 2 实验任务
1,
机器码 汇编指令 结果
1 B8 20 4E MOV AX,4E20 H AX=4E2O H BX=0 H IP=0 H
2 05 16 14 ADD AX,1416 H AX=6263 H BX=0 H IP=3 H
3 BB 00 20 MOV BX,2000 H AX=6263 H BX=2000 H IP=6 H
4 01 D8 ADD AX,BX AX=8236 H BX=2000 H IP=B H
5 89 C3 MOV BX,AX ...
机器码 汇编指令 结果
1 B8 20 4E MOV AX,4E20 H AX=4E2O H BX=0 H IP=0 H
2 05 16 14 ADD AX,1416 H AX=6263 H BX=0 H IP=3 H
3 BB 00 20 MOV BX,2000 H AX=6263 H BX=2000 H IP=6 H
4 01 D8 ADD AX,BX AX=8236 H BX=2000 H IP=B H
5 89 C3 MOV BX,AX ...
阅读全文 |
评论次数(3) |
浏览次数(401) |
所属类型(汇编作业)
[2013-07-13 12:22] 检测点 2.3
问题,下面3条指令执行后,CPU几次修改IP?都在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
答: 修改4次IP
第一次 准备执行mov
第二次 准备执行 sub
第三次 准备执行jmp
第四册 执行jmp
最后IP中的值是IP=ax=0...
mov ax,bx
sub ax,ax
jmp ax
答: 修改4次IP
第一次 准备执行mov
第二次 准备执行 sub
第三次 准备执行jmp
第四册 执行jmp
最后IP中的值是IP=ax=0...
阅读全文 |
评论次数(0) |
浏览次数(235) |
所属类型(汇编作业)
[2013-07-13 10:14] 第二章寄存器 2.9
8086CPU有4个段寄存器:CS、DS、SS、ES。
当8086CPU要访问内存时由这4个段寄存器提供内存单元的段地址。
CS为代码段寄存器,IP为指针寄存器。
读取一条指令后,IP中的值自动增加。
如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。
程序员可以通过改变寄存器中的内容实现对CPU的控制。
CUP是从CS、IP的内容处执行指令的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
8086CPU大部分的值都可以用MOV指令来改变,MOV指令被称为传送指令。
MOV不能改变CS、IP,因为8086C...
当8086CPU要访问内存时由这4个段寄存器提供内存单元的段地址。
CS为代码段寄存器,IP为指针寄存器。
读取一条指令后,IP中的值自动增加。
如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。
程序员可以通过改变寄存器中的内容实现对CPU的控制。
CUP是从CS、IP的内容处执行指令的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
8086CPU大部分的值都可以用MOV指令来改变,MOV指令被称为传送指令。
MOV不能改变CS、IP,因为8086C...
阅读全文 |
评论次数(0) |
浏览次数(264) |
所属类型(学习笔记)
[2013-07-10 09:16] 第二章 寄存器 2.4
所有的内存单元都有一个唯一的地址,我们将这唯一的地址称为物理地址。
8086是16位机,也可以说8086是16位结构的CPU。
16位结构机能够一次性处理、传输、暂时存储的信息的最大长度是16位,
运算器一次最多可以处理16为的数据;
寄存器的最大宽度为16位;
寄存器和运算器之间的通路为16位。
8086CPU有20为地址总线,可以传送20位地址,达到1MB寻址能力。8086CPU又是16位结构。
8086CPU地址加法器采用物理地址=段地址x16+偏移地址。
一个数据 X 进制形式左移1位,相当于乘以 X 。
段地址x16+...
8086是16位机,也可以说8086是16位结构的CPU。
16位结构机能够一次性处理、传输、暂时存储的信息的最大长度是16位,
运算器一次最多可以处理16为的数据;
寄存器的最大宽度为16位;
寄存器和运算器之间的通路为16位。
8086CPU有20为地址总线,可以传送20位地址,达到1MB寻址能力。8086CPU又是16位结构。
8086CPU地址加法器采用物理地址=段地址x16+偏移地址。
一个数据 X 进制形式左移1位,相当于乘以 X 。
段地址x16+...
阅读全文 |
评论次数(2) |
浏览次数(361) |
所属类型(学习笔记)
[2013-07-08 14:43] 第二章 寄存器 2.3
汇编指令
MOV AX,18 将18送入寄存器AX中 AX=18
MOV AH,78 AH=78
ADD AX,8 将寄存器AX中的数值+8 AX=AX=8
MOV AX,BX AX=BX
ADD AX,BX AX=AX+BX
汇编指令不分大小写。
注意指令的两个操作对象的位数应该一致
MOV AX,BL 错了
MOV BL,AH 可以
ADD ...
MOV AX,18 将18送入寄存器AX中 AX=18
MOV AH,78 AH=78
ADD AX,8 将寄存器AX中的数值+8 AX=AX=8
MOV AX,BX AX=BX
ADD AX,BX AX=AX+BX
汇编指令不分大小写。
注意指令的两个操作对象的位数应该一致
MOV AX,BL 错了
MOV BL,AH 可以
ADD ...
阅读全文 |
评论次数(0) |
浏览次数(240) |
所属类型(学习笔记)
[2013-07-07 12:08] 第二章 寄存器 2.2
1,00010到1000F
2,最小为0H,最大为2000H
这题我本来的答案是1001H 2000H
但后面发现把问题想错了,这问的不是偏移问的是段地址,段地址没有64KB的限制,假如那数据在0H或20000H……
3,2000H<SA<0H...
2,最小为0H,最大为2000H
这题我本来的答案是1001H 2000H
但后面发现把问题想错了,这问的不是偏移问的是段地址,段地址没有64KB的限制,假如那数据在0H或20000H……
3,2000H<SA<0H...
阅读全文 |
评论次数(0) |
浏览次数(283) |
所属类型(汇编作业)
[2013-07-06 08:54] 第二章 寄存器
在CPU中:
运算器进行信息处理;
寄存器进行信息存储;
控制器控制各种器件进行工作;
内部总线连接各种器件,在它们之间进行数据的传送。
8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
为了兼容上一代CPU,16位寄存器分为两个8位寄存器
如:AX可分为AH和AL
BX可分为BH和BL
CX可分为CH和CL
DX可分为DH和DL
出于对兼容考虑,8086CPU可以一次性处理以下...
运算器进行信息处理;
寄存器进行信息存储;
控制器控制各种器件进行工作;
内部总线连接各种器件,在它们之间进行数据的传送。
8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
为了兼容上一代CPU,16位寄存器分为两个8位寄存器
如:AX可分为AH和AL
BX可分为BH和BL
CX可分为CH和CL
DX可分为DH和DL
出于对兼容考虑,8086CPU可以一次性处理以下...
阅读全文 |
评论次数(0) |
浏览次数(269) |
所属类型(学习笔记)
『 查看更多文章 』