第三章总结

 

1.在内存中字的存储方式

在8086CPU中:高位字节放在较高的地址单元内,低地址内存单元中存放字型数据的低位字节。(小端法

2.DS寄存器:存储数据段的段地址。

例:mov bx,1000H

mov ds,bx

mov al,[0]

就可以将10000H(1000:0)中的数据读入al中。

注意:在8086CPU中不支持直接将数据直接送入段寄存器的操作。(即:不可mov  ds,1000,这一点上同CS,IP)

3.mov,add,sub汇编指令。

mov指令,功能:赋值

add指令,功能:相加

sub指令,功能:相减,sub ax,bx (功能相当于C语言中ax-=bx)

汇编指令 用法 例子
mov

mov 寄存器,数据

mov 寄存器,寄存器

mov 寄存器,内存单元

mov 内存单元,寄存器

mov 段寄存器,寄存器

mov ax,8

mov ax,bx

mov ax,[0]

mov [0],ax

mov ds,ax

add

add 寄存器,数据

add 寄存器,寄存器

add 寄存器,内存单元

add 内存单元,寄存器

add ax,8

add ax,bx

add ax,[0]

add [0],ax

sub

sub 寄存器,数据

sub 寄存器,寄存器

sub 寄存器,内存单元

sub 内存单元,寄存器

sub ax,9

sub ax,bx

sub ax,[0]

sub [0],ax

push

push 寄存器

push 段寄存器

push 内存单元

push ax

push ds

push [0]

pop

pop 寄存器

pop 段寄存器

pop 内存单元

pop ax

pop ds

pop[0]

4数据段:定义:将一组长度为N(N<=64KB),地址连续,起始地址为16的倍数内存单元作为专门储存数据的内存空间。

5栈

定义:将一组长度为N(N<=64KB),地址连续,起始地址为16的倍数内存单元当作栈空间来使用。

特性:先入后出LIFO(Last In First Out),就如同一个一段封口的管子,只能在一端进行放东西和取东西的操作。

指令:入栈指令 PUSH,出栈指令POP(用法见上表)

SS:堆栈段寄存器,用来储存栈底位置

SP:表示栈顶指针,指向栈顶地址

SS:SP始终指向栈顶

POP执行时,先将SS:SP指向的内存空间的值赋值给POP的操作对象。然后SP指针+2

PUSH执行

由于8086CPU不进行越界检查(这点和C语言类似),所以容易发生越界问题。

栈段的最大空间为64KB(2^16-1)

posted @ 2018-11-05 14:15  20171308085  阅读(141)  评论(0编辑  收藏  举报