1.0
我们以前都是在Debug中写一些指令,在Debug中执行。
现在我们将开始编写完整的汇编语言程序
用编译环和链接程序将它们编译链接成为可执行文件(.exe)...
[2014-06-07 13:21] 汇编学习——第4章 第一个程序
阅读全文 |
评论次数(1) |
浏览次数(959) |
所属类型(汇编学习)
[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) |
浏览次数(668) |
所属类型(汇编学习)
[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) |
浏览次数(666) |
所属类型(汇编学习)
[2014-06-04 13:22] 汇编学习——第3章 寄存器(内存访问)
3.10 栈段
在编程时,根据需要,将一组内存单元定义为一个段
当作栈空间来用,从而定义了一个栈段
将SS:SP指向我们定义的栈段...
在编程时,根据需要,将一组内存单元定义为一个段
当作栈空间来用,从而定义了一个栈段
将SS:SP指向我们定义的栈段...
阅读全文 |
评论次数(0) |
浏览次数(646) |
所属类型(汇编学习)
[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) |
浏览次数(653) |
所属类型(汇编学习)
[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) |
浏览次数(622) |
所属类型(汇编学习)
[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) |
浏览次数(887) |
所属类型(汇编学习)
[2014-06-04 12:24] 汇编学习——第3章 寄存器(内存访问)
3.6 栈
栈是一种具有特殊的访问方式的存储空间
它的特殊性在于,最后进入这个空间的数据,最先出去
栈的这种操作规则被称为: LIFO 后进先出
3.7 CPU提供的栈机制
CPU提供 PUSH(入栈) POP(出栈)两种指令
PUSH AX 表示将寄存器AX中的数据送入栈中
POP AX 表示从栈顶取出数据送入AX
8086CPU的入栈和出栈操作都是以“字1(6位)”为单元进行的
8086CPU中,有两个寄存器,段寄存器SS和寄存器SP
栈顶的段地址存放在SS中,偏移地址存放在SP中
任意时刻,SS:SP指向栈顶元素
PU...
栈是一种具有特殊的访问方式的存储空间
它的特殊性在于,最后进入这个空间的数据,最先出去
栈的这种操作规则被称为: LIFO 后进先出
3.7 CPU提供的栈机制
CPU提供 PUSH(入栈) POP(出栈)两种指令
PUSH AX 表示将寄存器AX中的数据送入栈中
POP AX 表示从栈顶取出数据送入AX
8086CPU的入栈和出栈操作都是以“字1(6位)”为单元进行的
8086CPU中,有两个寄存器,段寄存器SS和寄存器SP
栈顶的段地址存放在SS中,偏移地址存放在SP中
任意时刻,SS:SP指向栈顶元素
PU...
阅读全文 |
评论次数(0) |
浏览次数(208) |
所属类型(汇编学习)
[2014-06-04 11:57] 汇编学习 ——( 3.1节—3.5节) 小结
(1)字在内存中存储时,要用两个地址连续的内存单元来存放
字的低位字节放在低地址单元中
字的高位字节放在高地址单元中
(2)MOV指令访问内存单元
【可以】在MOV指令中只给出单元的偏移地址
此时,段地址默认在DS寄存器中
(3)[address]表示一个偏移地址为address的内存单元
(4)在内存和寄存器之间传送字型数据时
高地址单元和高8位寄存器
低地址单元和低8位寄存器
相对应
(5)MOV、ADD、SUB是具有两个操作对象的指令
JMP是具有一个操作对象的指令
(6)可以根据自己的推测...
字的低位字节放在低地址单元中
字的高位字节放在高地址单元中
(2)MOV指令访问内存单元
【可以】在MOV指令中只给出单元的偏移地址
此时,段地址默认在DS寄存器中
(3)[address]表示一个偏移地址为address的内存单元
(4)在内存和寄存器之间传送字型数据时
高地址单元和高8位寄存器
低地址单元和低8位寄存器
相对应
(5)MOV、ADD、SUB是具有两个操作对象的指令
JMP是具有一个操作对象的指令
(6)可以根据自己的推测...
阅读全文 |
评论次数(0) |
浏览次数(203) |
所属类型(汇编学习)
[2014-06-04 11:41] 汇编学习——第3章 寄存器(内存访问)
3.4 MOV、ADD、BUB指令
MOV指令:
MOV 寄存器,数据 比如: MOV AX,8
MOV 寄存器,寄存器 比如: MOV AX,BX
MOV 寄存器,内此单元 比如: MOV AX,[0]
MOV 内此单元,寄存器 比如: MOV [0],AX
MOV 段寄存器,寄存器 比如: MOV DS,AX
MOV 寄存器,段寄存器 比如: MOV AX,DS
MOV 内此单元,段寄存器 比如: MO...
MOV指令:
MOV 寄存器,数据 比如: MOV AX,8
MOV 寄存器,寄存器 比如: MOV AX,BX
MOV 寄存器,内此单元 比如: MOV AX,[0]
MOV 内此单元,寄存器 比如: MOV [0],AX
MOV 段寄存器,寄存器 比如: MOV DS,AX
MOV 寄存器,段寄存器 比如: MOV AX,DS
MOV 内此单元,段寄存器 比如: MO...
阅读全文 |
评论次数(0) |
浏览次数(213) |
所属类型(汇编学习)