码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言程序设计 第3章概念梳理

时间:2018-12-25 22:23:36      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:特性   段地址   汇编语言   偏移地址   最大   原理   关于   概念   运算   

汇编语言程序设计

第3章概念梳理

基础概念部分:{

     字数据在内存当中的存储:高-高 低-低
     字数据的低位字节存放在低地址内存单元
     字数据的高位字节存放在高地址内存单元

    取低地址内存单元地址作为字数据地址,例如数据124EH:
    12H存储在偏移量为"2"的字节单元,4EH存储在偏移量为"1"的字节单元
    则从地址为"1"的地址单元取出的一个字数据为124EH

技术分享图片  12为高位,故存储在高位“2”单元,4E为低位存储在低位”1“单元

    数据在内存和CPU之间的传送:
    执行指令时,默认情况下,8086自动取寄存器DS中的值为内存单元的段地址
    DS:数据段段寄存器,用于存放数据段的[段地址]
    mov,add,sub等汇编指令中,访问内存单元是,默认情况下指的是数据段。

    关于常数(立即数运算):
    不能作为第1个操作数(目的操作数)
    第2个操作数(源操作数)时,如果最高位是十六位制的a~f或A~F,前面要加零。

    例如不能写成 mov 4000H,ax,应当写成mov ax,4000H

           不能写成 mov ax,A400H,应当写成mov ax,0A400H


    两个内存单元之间不能直接传送数据:
     mov [1],[2]

    不能使用mov指令修改CS和IP的值

    关于段寄存器:

  •     两个段寄存器之间不能直接传送
  •     不能把常数送到段寄存器


    关于add指令:

  •     操作数是内存单元时,指令中只给出[偏移地址]。默认,[段地址]在ds中

    错误点:

  •     add指令的操作数不能同时是内存单元
  •     add [1],[2]


    add指令的操作数不能是段寄存器,例如:
    add ax,[2]
    add ds,[2]

   关于sub指令:

  •    同add指令一样,操作数是内存单元时,指令中只给出[偏移地址]。默认,[段地址]在ds中

   错误点:

  •    两个内存单元不能直接使用sub指令相减,例如:
  •    sub[1],[2]


   sub指令的操作数不能是段寄存器

   栈的概念:

   栈的特性:先进后出

  •    两个概念:栈底、栈顶
  •    两个操作:入栈、出栈


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

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

   与栈相关的寄存器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和pop指令的注意点:
   入栈和出栈均以字为单元
   操作对象不能是常数

   pop段寄存器当中,段寄存器不能是CS和SS

   可以利用栈的定义完成如下两个操作:
   1、利用栈"保护现场"

技术分享图片

保护现场原理: 先将寄存器bx,cx的值压入栈,然后无论对cx与bx寄存器的值进行如何的操作,都能通过栈先进后出的原则,把两个寄存器的值弹出返回。
   2、利用栈实现数据交换

技术分享图片
同样利用先进后出的原则,先将两个寄存器的值压入,而后根据它们压入栈的顺序相同的进行弹出,即可实现两个寄存器数据的交换。


   关于[段]的小结

   一段内存可以同时用作代码段、数据段、栈段
   在8086CPU中,每个段的最大长度不能超过64KB,即 0000H~FFFFH

汇编语言程序设计 第3章概念梳理

标签:特性   段地址   汇编语言   偏移地址   最大   原理   关于   概念   运算   

原文地址:https://www.cnblogs.com/cymwn-com/p/10176720.html

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