码迷,mamicode.com
首页 > 其他好文 > 详细

第三章

时间:2018-11-19 21:33:53      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:直接   数据段   ast   执行   pop   cpu   注意   第三章   push   

3.1~3.5

1、字单元:存放一个字型数据(16位)的内存单元,由2个地址连续的内存单元组成。(例:由2,3俩内存单元组成的字单元起始地址为2,称2地址字单元)

2、DS寄存器:存放要访问数据的段地址。

例:mov bx,1000h    (1)    (不能mov ds,1000h)

  mov ds,bx  (2)    (数据不能   直接送入  段寄存器)

  mov al,[0]    (3)   ([...]表示一个内存单元,【0】中的0表示内存单元的偏移地址)

  mov [0],cx    (4)    (cx中的16位数据送到1000:0处)

  sub ax,9  (5)      (将ax中的数据—9存入ax)

3、可以将一组   长度为N(<=64kb),地址连续,起始地址为16倍数   的内存单元当作专门存储数据的内存空间,即定义一个数据段。

 

3.6~3.10

1、栈操作规则:LIFO(last in first out)

2、8086CPU入栈出栈以字(俩字节)为单位。,

3、栈顶段地址和偏移地址存放于SS,SP寄存器。

4、为防止栈顶超界,要根据可能用到的最大栈空间来安排栈的大小,防止入栈数据太多导致的超界;出栈操作时注意栈空时继续出栈导致的超界。

5、例:

mov ax,1000h

mov ss,ax     (1)     初始化栈顶,为10010h。

mov sp,0010h

 

mov ax,001ah

mov bx,001bh       

 

push ax

push bx  (2)ax,bx入栈 1000fh处为00,1000eh为1a;   ( 栈顶变为sp-2,数据存于 sp-2处)

                1000dh处为00,1000ch为1b;

 

pop ax  (3)出栈:ax为001bh;

pop bx         bx为001ah

(push,pop 执行时只修改SP;栈顶最大变化范围为0~ffffh,容量为64KB;because:栈空时SP=0,栈满时SP也为0,如果再次压栈则栈顶环绕,覆盖原本内容)

6 、数据段,代码段,栈段的段地址存放于DS,CS,SS中。

实验二

由于访问内存的指令如“mov ax,[0]”默认段地址在DS,所以debug执行如“d 段地址:偏移地址”这种D指令时最好将段地址送入DS。

具体参见P72.

 

第三章

标签:直接   数据段   ast   执行   pop   cpu   注意   第三章   push   

原文地址:https://www.cnblogs.com/101whw/p/9985368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!