ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

汇编语言程序设计(八)数据处理的两个基本问题

2022-05-25 17:34:52  阅读:203  来源: 互联网

标签:寻址 汇编语言 处理 指令 内存 寄存器 数据处理 程序设计 数据


目录

数据处理两个基本问题

  • 处理的数据在什么地方
  • 要处理的数据有多长

寄存器reg与段寄存器sreg

  • 在8086CPU中,只有bx,bp,si,di这四个寄存器可以用在中括号中用于寻址,其它寄存器比如ax就不行。

  • bx,bp,si,di用于寻址时只能有4种组合

  • 寄存器bp用于寻址时,即只要在[]中使用寄存器bp,而指令中没有显式给出段地址,则段地址默认在栈段寄存器ss中。

机器指令处理的数据所在位置

  • 指令执行前,所要处理的数据可以在三个地方,即CPU(寄存器),内存、端口

汇编语言中用来表达数据位置的三个概念

  • 立即数,即idata,立即数是直接在汇编指令中给出的数据,比如 mov ax, 1中的1,这个数不是存放在数据段的,而是在代码段,并且在执行前存放在CPU的指令缓冲器中。
  • 寄存器,顾名思义,数据可以存放在cpu的寄存器中。
  • 段地址SA和偏移地址EA,即指令要处理的数据在内存中,通过段地址和偏移地址来寻址,其中存放段地址的寄存器可以是默认的,也可以显式给出。

寻址方式

  • 只有当数据在内存中的时候才需要寻址,用段地址和偏移地址定位内存单元的方法称为寻址方式。

指令要处理的数据有多长

  • 8086CPU的机器指令可以处理两种尺寸的数据,byte和word,所以在指令中要知名进行的是字操作还是字节操作。
  • 可以通过三种方法指明要处理的数据有多长

通过寄存器名指明要处理的数据的尺寸


用操作符X ptr指明内存单元的长度

  • 在没有寄存器名存在的情况下(即可能只操作了内存单元,或者内存单元与立即数),用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte

其他方法

  • 有些指令默认了访问的是字单元还是字节单元,比如push指令,只进行字操作,一次两个字节。

div除法指令

  • 除数:8位或者16位,存放在寄存器或内存单元中
  • 被除数:默认放在AX或 DX和AX中
  • 当除数是8位时,被除数是16位,默认放在AX中。商在AL中,余数在AH中。
  • 当除数是16位时,被除数是32位,默认放在DX+AX中。商在AX中,余数在DX中。

伪指令dd

  • db和dw分别用来定义字节型数据和字型数据,dd则用来定义dword,即双字型数据。

dup操作符

  • 与db、dw、dd一样,是由编译器识别处理的符号,dup是一个操作符,dup与前述三个指令一起用,用来进行数据的重复。如下例子,dup()括号中是重复元,前边的数字3是重复次数。

标签:寻址,汇编语言,处理,指令,内存,寄存器,数据处理,程序设计,数据
来源: https://www.cnblogs.com/chkplusplus/p/16309773.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有