16ASM 寻址

2023-12-11 17:52
文章标签 寻址 16asm

本文主要是介绍16ASM 寻址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

寻址概述

立即寻址

寄存器寻址

直接寻址

寄存器间接寻址

寄存器相对寻址

基址变址寻址

基址变址相对寻址


寻址概述

什么是寻址?

  1. 指令中用于说明操作数所在的方式称为寻址方式。
  2. 操作数的值存放的地方为内存或则寄存器,寻找操作数所在位置的过程称为寻址。

操作数的值可以存储在哪里?内存,寄存器。

寻址大致分为两类:从上往下,CPU执行的步骤过程越多

寄存器寻址

  • 立即寻址
  • 寄存器寻址

内存寻址

  • 直接寻址
  • 寄存器间接寻址
  • 寄存器相对寻址
  • 基址变址寻址
  • 基址变址相对寻址

指令集分类

  • 复杂指令集(CRIC):希望硬件变得更强大,功能交给硬件。开发者做的事更少
  • 精简指令集(RICS):频繁使用的百分之20的指令,其他复杂的指令通过简单的指令模拟组合。例如:ARM

立即寻址

什么是立即寻址?

  • 操作数的值存储在指令中的方式称作立即寻址。
  • 汇编中整数常量称为立即数。
  • 立即数可以是8位,也可以是16位。
MOV AL,80H;将8位立即数80H送入 AL寄存器
MOV AX,1234H;将16位立即数1234H送入寄存器AX

注意:

  1. 16位立即数不能传送给8位寄存器 MOV AL,7788; Error
  2. 8位立即数给16位寄存器传送值,将会自动扩展立即数为16位,前面用00填充 MOV AX,45; 汇编码:MOV AX,0045

寄存器寻址

什么是寄存器寻址?

  • 操作数的值存储在寄存器的寻址方式称作寄存器寻址。
  • 寄存器包括:通用寄存器段寄存器。IP 和 XX 不能用作寻址,他们有特殊的用途。
MOV CL,DL
MOV AX,BX

注意:

  1. 段寄存器之间不能赋值。MOV DS,CS ;Error MOV AX,CS;正确
  2. 指令指针寄存器不能用作寻址。

直接寻址

什么是直接寻址?

  • 操作数值在内存中,机器码中存储16位段内偏移的寻址方式称作直接寻址。
  • 访问方式:段基址 (可省略,默认的)+ 段偏移【存在机器码内】

MOV AL,[1064H];从内存DS 段基址 + 1064 的地址中取数据,传送给AL

注意:

  1. 立即数存内存需要指定长度。
  2. 内存和寄存器之间的赋值不用指定宽度,因为寄存器本身有宽度,直接通过寄存器的宽度,推导出内存的,如果给立即数,指定就不明确。
    1. MOV [2000],65; Error
    2. MOV [2000],6655; Error
    3. MOV byte ptr[2000],65; 正确,指定宽度
    4. MOV word ptr[2000],6655;正确,指定操作word宽度
    5. MOV byte ptr[2000],6655; Error
  3. 不能从内存到内存,除了串操作指令【特殊,使用的寄存器固定,操作的时候就操作固定的两个寄存器】

寄存器间接寻址

什么是寄存器间接寻址?

  • 操作数值在内存中,段内偏移存储在寄存器中的寻址方式称作寄存器间接寻址。
  • 段内偏移值存储在寄存器中,而不是直接的常数。CPU先拿出寄存器中段内偏移,再相加。
  • 支持间接寻址的寄存器有BX、BP、SI、DI

MOV AX,[SI];将SI中的值作为段内偏移,从内存中取出数据赋值AX
MOV [BX],AL;将BX中的值作为段内偏移,吧AL中的值赋值给对应内存

寄存器相对寻址

什么是寄存器相对寻址?

  • 操作数的值在内存中,段内偏移 一部分存储在寄存器中, 一部分是立即数。【寄存器+立即数】计算得来的偏移量的寻址方式称为相对寻址。
  • 寄存器相对寻址寄存器有 BX,BP,SI,DI
  • 寄存器相对寻址的立即数可以是8位,也可以是16位。MOV AL,[BX + 12]; MOV AX,[BX+1234];

MOV [SI + 10H],AX;
MOV CX,[BX+COUNT];COUNT 是一个立即数

基址变址寻址

什么是基址变址寻址?

  • 与机制相对寻址不用的是,计算段偏移所需要的不是 寄存器+立即数,而是寄存器+寄存器。
  • 可用作机制的寄存器有BX,BP
  • BX默认DS段,BP默认SS段。

MOV [BX+DI],AX;
MOV CX,[BP + SI]

基址变址相对寻址

什么是基址变址相对寻址?

  • 操作数值在内存中,段内偏移由[基址寄存器+变址寄存器+偏移常量]计算得来的寻址方式称作基址变址寻址。  
  • 可用做基址的寄存器有BX, BP。  
  • BX默认DS段,BP默认SS段。
  • 可用作变址的寄存器有SI, DI。
  • 可用作常量的数值可以是8位,可以是16位。

MOV  AX, [BX+DI+1200H]
MOV [BP+SI+200H], CX

MOV指令有几个注意事项:

  1. 段寄存器之间不能直接传送。
  2. 立即数对内存赋值的时候,需要指定操作宽度
  3. 在大多数情况下,【】内的寄存器一般只能是那BP,BD,SI,DI,四个,或则是他们的组合。

这篇关于16ASM 寻址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481560

相关文章

【软件逆向】第30课,软件逆向安全工程师之(五)寄存器相对寻址,每天5分钟学习逆向吧!

寄存器相对寻址是汇编语言中的一种寻址方式,它结合了寄存器间接寻址和立即数偏移。在这种寻址方式中,操作数的有效地址是通过将一个寄存器的内容与一个固定的偏移量(立即数)相加来得到的。以下是关于寄存器相对寻址的详细信息: 寄存器相对寻址的特点: 操作数地址是寄存器内容与偏移量的和:有效地址是寄存器的内容加上一个固定的立即数偏移量。灵活且具体:提供了对特定内存位置的间接访问,同时允许通过改变寄存器的内

【软件逆向】第27课,软件逆向安全工程师之(二)寄存器寻址,每天5分钟学习逆向吧!

寄存器寻址是汇编语言中的一种寻址方式,在这种方式中,操作数位于CPU的寄存器中。寄存器是CPU内部的高速存储位置,用于快速访问数据。以下是关于寄存器寻址的详细信息: 寄存器寻址的特点: 操作数在寄存器中:数据直接存储在寄存器中,而不是内存地址或立即数。快速访问:由于寄存器位于CPU内部,因此访问速度远快于内存。指令简短:使用寄存器寻址的指令通常较短,因为不需要指定内存地址。 识别寄存器寻址:

32位操作系统寻址范围与支持的最大内存空间

32位的操作系统能够寻址的地址编号范围是1到2的32次方,而每一个地址都是指的内存中一个字节的地址,所以32位操作系统能够支持访问的的最大内存空间是2的32次方字节,也就是4G的内存空间,根据自己的理解,自己画了张图如下: 一个内存地址代表一个字节的地址不是一bit的地址 背景知识: 在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。

寄存器、寻址、一些问题的解释。

****************************************************************************************************************************************************寄存器,内存.存储器举报|2009-08-28 14:28若_水儿 | 分类:网站使用 | 浏览1252

HBASE的寻址机制和存储机制

HBASE的寻址机制和存储机制 hbase的寻址机制hbase的存储机制hbase的存储机制:0.96及之前版本hbase的寻址过程:0.96及之前版本hbase的存储机制:0.96之后版本hbase的寻址过程:0.96之后版本写机制读机制 hbase的寻址机制 hbase 的一个表最终拆分成 一个个region,每一个region可能会存储在不同的regionserver

【计算机组成原理】四、指令系统:2.指令的寻址方式(指令寻址、数据寻址)

指令的寻址方式 文章目录 指令的寻址方式3.指令寻址3.1顺序寻址3.2跳跃寻址 4.数据寻址4.1直接寻址4.2间接寻址4.3寄存器寻址4.4寄存器间接寻址4.5隐含寻址4.6立即寻址4.7偏移寻址4.7.1基址寻址4.7.2变址寻址4.7.3相对寻址 4.8堆栈寻址 3.指令寻址 指令寻址:确定下一条指令存放的地址。 程序计数器PC:指明一条指令的存放地址。 【注意

磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢

(1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间。            如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CPU的计算才是并行的,如果你偏重计算那么多线程能提高,要不怎么叫做并行计算呢;           如果侧重存储,除非数据量达到足以体现优势的程度,否则加上线程之间切换的损耗

信息学奥赛初赛天天练-71-NOIP2016普及组-基础题2-进制转换、二进制转八进制、八进制转二进制、二叉树数组存储、寻址空间

NOIP 2016 普及组 基础题2 4 以下不是 CPU 生产厂商的是( ) A Intel B AMD C Microsoft D IBM 8 与二进制小数 0.1相等的八进制数是( ) A 0.8 B 0.4 C 0.2 D 0.1 9 以下是 32 位机器和 64 位机器的区别是( ) A 显示器不同 B 硬盘大小不同 C 寻址空间不同 D 输入法不同 11一棵二叉树如右图所示,若

逆向学习汇编篇:内存管理与寻址方式

本节课在线学习视频(网盘地址,保存后即可免费观看): ​​https://pan.quark.cn/s/3ceeb9ae6d98​​ 在汇编语言的世界中,内存管理和寻址方式是构建程序的基础。理解这些概念不仅对于编写高效的汇编代码至关重要,也是进行逆向工程分析的关键技能。本文将深入探讨内存管理的基本原则和多种寻址方式,并通过代码案例来展示它们的实际应用。 1. 内存管理 内存管理涉及如何分配

一文概括:内容可寻址寄存器(CAR)

一、概述         内容可寻址寄存器(Content-Addressable Register,CAR)是一种能够根据内容(数据)而非传统的存储地址来进行数据访问的特殊存储单元。与地址可寻址寄存器不同,内容可寻址寄存器可以通过指定的数据值来查找存储的位置,使其在需要高效数据检索的应用中尤其有用。 二、工作原理         内容可寻址寄存器的操作基于数据内容匹配而非地址访问。其工作过