第三章
Posted 101whw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章相关的知识,希望对你有一定的参考价值。
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.
以上是关于第三章的主要内容,如果未能解决你的问题,请参考以下文章