汇编第三章总结

1.字数据在内存中的存储

    存取原则:高 高 低 低 即:字数据的低位字节存放在低位内存单元;高位存放在高位字节存放在高地址内存单元;取低地址内存单位作为字数据地址。

2.数据在内存和cpu之间的传送

    DS寄存器:数据段段寄存器,用于存放数据段的【段地址】

           将一段内存用作数据段,是编程时的一种安排;在mov add sub 等汇编指令中,访问内存单元时,默认情况下指的是数据段。mov ax,【1】;ax<—((ds)*16+1)

3.汇编指令mov,add,sub

mov 指令形式:mov 寄存器,常数    mov ax,1000H  ;mov 寄存器,寄存器    mov bx,ax   ;mov  寄存器,内存单元   mov ax 【1】;mov 寄存器,段寄存器    mov ax,ds;mov 内存单元,常数     mov 【1】,byte ptr 3;mov   内存单元,寄存器 mov 【1】,ax; mov  内存单元 寄存器   mov 【1】,ds; mov 段寄存器,寄存器  mov ds,ax;mov 段寄存器,内存单元  mov ds,【1】

(1)两个操作的长度一致(2)关于常数,不能作为第一个操作数,做第二个操作数时如果最高位是十六进制的a~f或者A~F前面要加零(3)两个内存单元之间不能直接传送数据(4)不能使用mov指令修改CS和IP的值(5)关于段寄存器 两个断就成年期直接不能直接传送;不能把常数送到段寄存器

add指令形式:add 寄存器,常数    add ax,1000H  ;add 寄存器 寄存器,add bx,ax;add  寄存器,内存单元,add ax,【1】;add 内存单元 常数 ,add 【1】,byte ptr 3;add 内存单元 寄存器,add 【1】,ax

(1)add指令的操作数不能同时是内存单元(2)add指令的操作数不能是段寄存器

sub指令:sub 寄存器,常数  sub ax,1000H;sub寄存器,寄存器 sub bx,ax;sub寄存器,内存单元 , sub ax,【1】;sub 内存单元,常数 , sub 【1】,byte ptr 3;sub 内存单元,寄存器  sub 【1】,ax

(1)两个内存单元不能直接使用sub指令相减(2)sub指令的操作不能是段寄存器

4.栈

是一个逻辑上的概念,可以将一段内存空间当作栈来使用

特性:后进先出;两个概念:栈底栈顶;两个操作:出栈入栈;一个约定:8086中栈以字为存取单元

栈顶:最后入栈的字数据所对应的地址单元;栈底:固定的一端,栈区最高地址单元的前一个单元

入栈:把数据存入栈;出栈:把栈取出数据

 入栈操作分析:1126H存入栈区

         第一步:栈顶上移两个单元,即栈顶-2—>栈顶;第二步存入数据

出栈操作分析:从栈中取出一个字数据给AX

          第一步:取出字数据5020H—>AX;第二步:栈顶下移两个单元,即:栈顶+2—>栈顶

与栈相关的寄存器SS和SP

ss:栈段段寄存器,用于存放栈段的段地址

sp:栈指针寄存器,用于存放栈顶的偏移地址

ss:sp对应的物理地址是栈顶的物理地址   (ss)*16+(sp)—>栈顶的物理地址

栈操作指令:push和pop

指令形式:push ax   栈<—ax;pop ax   ax<—栈    push 【0】  栈<—ds:0对应的内存单元字数据 ;pop【0】    ds:0对应的内存单元<—栈;push ds   栈<—ds ;pop ds  ds<—栈

汇编指令:push 寄存器 将寄存器植入栈;pop 寄存器  用寄存器保存出栈数据;push内存单元  将内存单元内容入栈;pop  内存单元  用内存单元保存出栈数据;push 段寄存器  江段寄存器植入栈;pop 段寄存器  用段寄存器保存出栈数据

在posh内存单元和pop内存单元中,指令中只需给出【偏移地址】默认地址在DS中。

对8086cpu而言,push和pop的操作:入栈和出栈均以字为单位;操作对象不能是常数;pop段寄存器中,段寄存器不能是cs和ss;

利用栈后入先出特性,使用push和pop指令可以完成一些特殊处理

pop ss;x

          ;ss<—(ss:sp)

          ;sp<—(sp)+2

栈顶超界;当栈慢的时候,在使用push指令入栈;当栈空的时候,在使用pop指令出栈;

猜你喜欢

转载自www.cnblogs.com/yoyozzl/p/10189581.html