1.0
我们以前都是在Debug中写一些指令,在Debug中执行。
现在我们将开始编写完整的汇编语言程序
用编译环和链接程序将它们编译链接成为可执行文件(.exe)...
[2014-06-07 13:21] 汇编学习——第4章 第一个程序
阅读全文 |
评论次数(1) |
浏览次数(869) |
所属类型(汇编学习)
[2014-06-04 14:05] 汇编实践——实验任务2
使用Debug,将程序段写入内存,逐条执行...
阅读全文 |
评论次数(0) |
浏览次数(595) |
所属类型(汇编作业)
[2014-06-04 14:02] 汇编实验——2.用机器指令和汇编指令
-D 段寄存器:偏移地址
E、A、U 命令同样可以使用段寄存器
-E 段寄存器:偏移地址
-A 段寄存器:偏移地址
-U 段寄存器:偏移地址
Debug的T命令在执行修改寄存器SS的指令时
下一条指令也紧接着被执行...
E、A、U 命令同样可以使用段寄存器
-E 段寄存器:偏移地址
-A 段寄存器:偏移地址
-U 段寄存器:偏移地址
Debug的T命令在执行修改寄存器SS的指令时
下一条指令也紧接着被执行...
阅读全文 |
评论次数(0) |
浏览次数(617) |
所属类型(汇编学习)
[2014-06-04 13:55] 汇编作业——检测点3.2
MOV AX,1000H
MOV DS,AX
MOV AX,2000H
MOV SS,AX
MOV SP,0010H
PUSH [0]
PUSH [2]
PUSH [4]
PUSH [6]
PUSH [8]
PUSH [A]
PUSH [C]
PUSH [E]
MOV AX,2000H
MOV DS,AX
MOV AX,1000H
MOV SS,AX
MOV SP,0000H
POP[E]
POP[C]
POP[A]
POP[8]
POP[6]
POP[4]
POP[2]
POP[0]...
MOV DS,AX
MOV AX,2000H
MOV SS,AX
MOV SP,0010H
PUSH [0]
PUSH [2]
PUSH [4]
PUSH [6]
PUSH [8]
PUSH [A]
PUSH [C]
PUSH [E]
MOV AX,2000H
MOV DS,AX
MOV AX,1000H
MOV SS,AX
MOV SP,0000H
POP[E]
POP[C]
POP[A]
POP[8]
POP[6]
POP[4]
POP[2]
POP[0]...
阅读全文 |
评论次数(0) |
浏览次数(560) |
所属类型(汇编作业)
[2014-06-04 13:47] 汇编学习——段的综述
我们可以将一段内存定义为一个段
用一个段地址指示段,用偏移地址访问段内的单元
我们可以用一个段存放数据,将它定义为“数据段”
我们可以用一个段存放代码,将它定义为“代码段”
我们可以用一个段当作栈,将它定义为“栈段”
对于数据段,段地址放在DS中
用MOV、ADD、SUB等访问内存单元的指令时
CPU就将我们定义的数据段中的内容当作数据来访问
对于代码段,段地址放在CS中
将段中的第一条指令的偏移地址放在IP中
这样CPU就将执行我们定义的代码段中的指令
对于栈段,段地址放在SS中
将栈顶单元的偏移地址放在SP中
这样CPU在需要进行栈操作的时候
比...
用一个段地址指示段,用偏移地址访问段内的单元
我们可以用一个段存放数据,将它定义为“数据段”
我们可以用一个段存放代码,将它定义为“代码段”
我们可以用一个段当作栈,将它定义为“栈段”
对于数据段,段地址放在DS中
用MOV、ADD、SUB等访问内存单元的指令时
CPU就将我们定义的数据段中的内容当作数据来访问
对于代码段,段地址放在CS中
将段中的第一条指令的偏移地址放在IP中
这样CPU就将执行我们定义的代码段中的指令
对于栈段,段地址放在SS中
将栈顶单元的偏移地址放在SP中
这样CPU在需要进行栈操作的时候
比...
阅读全文 |
评论次数(0) |
浏览次数(612) |
所属类型(汇编学习)
[2014-06-04 13:32] 汇编思考——问题(3.11---3.12)
将10000H--1FFFFH这段空间当作栈段,初始状态是空
此时,SS=1000H SP=0000H
PUSH POP等指令在执行的时候只修改SP
所以栈顶的变化范围是0000H--FFFFH
从栈空时候的SP=0,一直压栈,直到栈满时SP=0
如果再次压栈,栈顶将环绕,覆盖了原来栈中的内容
所以一个站段的容量最大为64KB...
此时,SS=1000H SP=0000H
PUSH POP等指令在执行的时候只修改SP
所以栈顶的变化范围是0000H--FFFFH
从栈空时候的SP=0,一直压栈,直到栈满时SP=0
如果再次压栈,栈顶将环绕,覆盖了原来栈中的内容
所以一个站段的容量最大为64KB...
阅读全文 |
评论次数(0) |
浏览次数(598) |
所属类型(汇编作业)
[2014-06-04 13:22] 汇编学习——第3章 寄存器(内存访问)
3.10 栈段
在编程时,根据需要,将一组内存单元定义为一个段
当作栈空间来用,从而定义了一个栈段
将SS:SP指向我们定义的栈段...
在编程时,根据需要,将一组内存单元定义为一个段
当作栈空间来用,从而定义了一个栈段
将SS:SP指向我们定义的栈段...
阅读全文 |
评论次数(0) |
浏览次数(592) |
所属类型(汇编学习)
[2014-06-04 13:18] 汇编学习——栈的综述
(1)8086CPU提供的栈的操作机制:
在SS、SP存放栈顶的段地址和偏移地址
入栈和出栈指令,根据SS:SP指示地址,以栈的方式访问内存单元
(2)PUSH指令执行步骤:①SP=SP-2
②向SS:SP指向的字单元中送入数据
(3)POP指令执行步骤: ①向SS:SP指向的字单元中读取数据
②SP=SP+2
(4)任意时刻,SS:SP指向栈顶元素
(5)8086CPU只记录栈顶,栈空间的大小我们要自己管理
(6)用栈来暂存以后需要恢复的寄存器的内容时
寄存器内容...
在SS、SP存放栈顶的段地址和偏移地址
入栈和出栈指令,根据SS:SP指示地址,以栈的方式访问内存单元
(2)PUSH指令执行步骤:①SP=SP-2
②向SS:SP指向的字单元中送入数据
(3)POP指令执行步骤: ①向SS:SP指向的字单元中读取数据
②SP=SP+2
(4)任意时刻,SS:SP指向栈顶元素
(5)8086CPU只记录栈顶,栈空间的大小我们要自己管理
(6)用栈来暂存以后需要恢复的寄存器的内容时
寄存器内容...
阅读全文 |
评论次数(0) |
浏览次数(579) |
所属类型(汇编学习)
[2014-06-04 13:03] 汇编思考—— 问题(3.7---3.10)
用栈暂存以后需要恢复的寄存器中的内容时
数据出栈和入栈的顺序相反
PUSH AX 是入栈指令,它的执行过程是
先将记录栈顶偏移地址的SP寄存器中的内容减2
使得SS:IP指向新的栈顶单元
然后再将寄存器中的数据送入SS:IP指向的新的栈顶单元
PUSH、POP实质上就是一种内存传送指令
可以再寄存器和内存之间传送数据
CPU执行MOV指令只需一步操作,就是传送
执行PUSH、POP指令需两步操作:
执行PUSH指令:先改变SP,后向SS:SP处传送
执行POP指令: 先读取SS:SP处数据,后改变...
数据出栈和入栈的顺序相反
PUSH AX 是入栈指令,它的执行过程是
先将记录栈顶偏移地址的SP寄存器中的内容减2
使得SS:IP指向新的栈顶单元
然后再将寄存器中的数据送入SS:IP指向的新的栈顶单元
PUSH、POP实质上就是一种内存传送指令
可以再寄存器和内存之间传送数据
CPU执行MOV指令只需一步操作,就是传送
执行PUSH、POP指令需两步操作:
执行PUSH指令:先改变SP,后向SS:SP处传送
执行POP指令: 先读取SS:SP处数据,后改变...
阅读全文 |
评论次数(0) |
浏览次数(562) |
所属类型(汇编学习)
[2014-06-04 12:45] 汇编学习——第3章 寄存器(内存访问)
3.8 栈顶超界的问题
8086CPU工作机理:
当前的栈顶在何处,当前要执行的指令是那一条
要根据可能用到的最大栈空间,来安排栈的大小,防止栈顶超界
3.9 PUSH、POP指令
PUSH 寄存器 ;将一个寄存器的数据入栈
POP 寄存器 ;出栈,用一个寄存器接收出栈数据
PUSH 段寄存器 ;将一个段寄存器的数据入栈
POP 段寄存器 ;出栈,用一个段寄存器接收出栈数据
PUSH 寄存器 ;将一个内存字单元处的字入栈
POP 寄存器 ;出栈,用一个内存字单元接收出栈数据
例子:
...
8086CPU工作机理:
当前的栈顶在何处,当前要执行的指令是那一条
要根据可能用到的最大栈空间,来安排栈的大小,防止栈顶超界
3.9 PUSH、POP指令
PUSH 寄存器 ;将一个寄存器的数据入栈
POP 寄存器 ;出栈,用一个寄存器接收出栈数据
PUSH 段寄存器 ;将一个段寄存器的数据入栈
POP 段寄存器 ;出栈,用一个段寄存器接收出栈数据
PUSH 寄存器 ;将一个内存字单元处的字入栈
POP 寄存器 ;出栈,用一个内存字单元接收出栈数据
例子:
...
阅读全文 |
评论次数(1) |
浏览次数(797) |
所属类型(汇编学习)
『 查看更多文章 』