汇编网首页登录博客注册
wohuibian的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
好友圈
文章收藏

[2014-06-07 13:21] 汇编学习——第4章 第一个程序

1.0
我们以前都是在Debug中写一些指令,在Debug中执行。
现在我们将开始编写完整的汇编语言程序
用编译环和链接程序将它们编译链接成为可执行文件(.exe)...
阅读全文 | 评论次数(1) | 浏览次数(959) | 所属类型(汇编学习)

[2014-06-04 14:02] 汇编实验——2.用机器指令和汇编指令

-D 段寄存器:偏移地址

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在需要进行栈操作的时候
比...
阅读全文 | 评论次数(0) | 浏览次数(666) | 所属类型(汇编学习)

[2014-06-04 13:22] 汇编学习——第3章 寄存器(内存访问)

3.10  栈段

在编程时,根据需要,将一组内存单元定义为一个段
当作栈空间来用,从而定义了一个栈段
将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)用栈来暂存以后需要恢复的寄存器的内容时
   寄存器内容...
阅读全文 | 评论次数(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处数据,后改变...
阅读全文 | 评论次数(0) | 浏览次数(622) | 所属类型(汇编学习)

[2014-06-04 12:45] 汇编学习——第3章 寄存器(内存访问)

3.8  栈顶超界的问题

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...
阅读全文 | 评论次数(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)可以根据自己的推测...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(0) | 浏览次数(213) | 所属类型(汇编学习)
页码数(3):  1  2  3