汇编语言程序设计(八)数据处理的两个基本问题
2022/5/26 1:51:27
本文主要是介绍汇编语言程序设计(八)数据处理的两个基本问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 数据处理两个基本问题
- 寄存器reg与段寄存器sreg
- 机器指令处理的数据所在位置
- 汇编语言中用来表达数据位置的三个概念
- 寻址方式
- 指令要处理的数据有多长
- 通过寄存器名指明要处理的数据的尺寸
- 用操作符X ptr指明内存单元的长度
- 其他方法
- div除法指令
- 伪指令dd
- dup操作符
数据处理两个基本问题
- 处理的数据在什么地方
- 要处理的数据有多长
寄存器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是重复次数。
这篇关于汇编语言程序设计(八)数据处理的两个基本问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南