当前位置: 首页 > article >正文

16asm - 寻址

文章目录

  • 前言
    • 寻址概述
      • 分类
    • 立即寻址
    • 寄存器寻址
    • 直接寻址
    • 寄存器间接寻址
    • 寄存器相对寻址
    • 基址变址寻址
    • 基址变址相对寻址
    • 注意事项
  • 总结

前言

  • 各位师傅大家好,我是qmx_07,今天讲一下寻址的相关知识点
    在这里插入图片描述

寻址概述

介绍:

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

分类

寄存器寻址:

  • 立即寻址
  • 寄存器寻址

内存寻址:

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

立即寻址

mov al,80H //将8位立即数80H送入 AL寄存器
mov ax,1234 //将16位立即数1234H送入 AX寄存器
  • 操作数的值存储在指令中的方式称作立即寻址。
  • 汇编中整数常量称为立即数。
  • 立即数可以是8位,也可以是16位。
    在这里插入图片描述
    演示:
    在这里插入图片描述
    注意:
  1. 16位立即数不能传送给8位寄存器 MOV AL,7788; Error
  2. 8位立即数给16位寄存器传送值,将会自动扩展立即数为16位,前面用00填充 MOV AX,45; 汇编码:MOV AX,0045

寄存器寻址

MOV CL,DL
MOV AX,BX
  • 操作数的值存储在寄存器的寻址方式称作寄存器寻址
  • 寄存器包括:通用寄存器段寄存器
    在这里插入图片描述
    演示:
    在这里插入图片描述
    注意:
  1. 段寄存器之间不能赋值
    在这里插入图片描述
    2 指令指针寄存器不能用作寻址(IP)

直接寻址

MOV AL,[1064H];从内存DS 段基址 + 1064 的地址中取数据,传送给AL
  • 操作数值在内存中,机器码中存储16位段内偏移的寻址方式称作直接寻址。
  • 访问方式:段基址 (可省略,默认的)+ 段偏移【存在机器码内】
    在这里插入图片描述
    演示:
    在这里插入图片描述
    注意:
  1. 立即数存内存需要指定长度

  2. 内存和寄存器之间的赋值不用指定宽度,寄存器本身有宽度,可以推导
    在这里插入图片描述
    字节宽度: byte ptr[偏移量]
    子宽度: word ptr[偏移量]

  3. 不能从内存到内存

寄存器间接寻址

MOV AX,[SI];将SI中的值作为段内偏移,从内存中取出数据赋值AX
MOV [BX],AL;将BX中的值作为段内偏移,吧AL中的值赋值给对应内存
  • 操作数值在内存中,段内偏移存储在寄存器中的寻址方式称作寄存器间接寻址
  • 段内偏移值存储在寄存器中,而不是直接的常数。CPU先拿出寄存器中段内偏移,再相加。
  • 支持间接寻址的寄存器有BXBPSIDI
    在这里插入图片描述
    演示:
    在这里插入图片描述

寄存器相对寻址

MOV [SI + 10H],AX;
MOV CX,[BX+COUNT];COUNT 是一个立即数
  • 操作数的值在内存中,段内偏移 一部分存储在寄存器中, 一部分是立即数。【寄存器+立即数】计算得来的偏移量的寻址方式称为相对寻址
  • 寄存器相对寻址寄存器有 BX,BP,SI,DI
  • 寄存器相对寻址的立即数可以是8位,也可以是16位
    在这里插入图片描述
    在这里插入图片描述
    演示:
    在这里插入图片描述

基址变址寻址

MOV [BX+DI],AX;
MOV CX,[BP + SI]
  • 与机制相对寻址不用的是,计算段偏移所需要的不是 寄存器+立即数,而是寄存器+寄存器
  • 可用作机制的寄存器有BX,BP
  • 可用作变址的寄存器有SI,DI
  • BX默认DS段,BP默认SS段
    在这里插入图片描述
    在这里插入图片描述
    演示:
    在这里插入图片描述

基址变址相对寻址

MOV  AX, [BX+DI+1200H]
MOV [BP+SI+200H], CX
  • 操作数值在内存中,段内偏移由[基址寄存器+变址寄存器+偏移常量]计算得来的寻址方式称作基址变址寻址
  • 可用做基址的寄存器有BX, BP
  • BX默认DS段,BP默认SS段
  • 可用作变址的寄存器有SI, DI
  • 可用作常量的数值可以是8位,可以是16位
    在这里插入图片描述
    在这里插入图片描述
    演示:
    在这里插入图片描述

注意事项

  • 段寄存器之间不能直接传送
  • 立即数对内存赋值的时候,需要指定操作宽度
  • 大多数情况下,[]内的寄存器一般只能是那BP,BD,SI,DI

总结

  • 对寻址的概念,寻址的方式 进行了讲解和演示

http://www.kler.cn/a/421147.html

相关文章:

  • 前端开发 之 15个页面加载特效中【附完整源码】
  • IDEA中更改了项目模块名,IDEA丢失该模块的问题
  • Python性能优化:编码、计算与数据处理的极速方案
  • 【Spring】介绍一下 Spring 的 xml 标签以及 Bean 的常用配置
  • 十、软件设计架构-微服务-服务调用Dubbo
  • 【Nacos01】消息队列与微服务之Nacos 介绍和架构
  • 电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用
  • 面向人工智能安全的多维应对策略
  • OpenCV圆形标定板检测算法findCirclesGrid原理详解
  • 算法训练-搜索
  • C++备忘录模式
  • 汽车智能扭矩控制系统的未来发展趋势分析
  • 2024年认证杯SPSSPRO杯数学建模A题(第一阶段)保暖纤维的保暖能力全过程文档及程序
  • 显卡(Graphics Processing Unit,GPU)光线追踪详细介绍
  • HTML5+JavaScript实现连连看游戏
  • 2025年软考开考科目有哪些?中高级科目哪个容易拿证?
  • 基于“微店 Park”模式下 2+1 链动模式商城小程序的创新发展与应用研究
  • 24年某马最新大数据相关软件安装文档
  • 每日小知识
  • autogen-agentchat 0.4.0.dev8版本的安装
  • HarmonyOS开发:关于签名信息配置详解
  • 【系统架构设计师】真题论文: 论软件质量保证及其应用(包括解题思路和素材)
  • Chromium网络调试篇-Fiddler 5.21.0 使用指南:捕获浏览器HTTP(S)流量(二)
  • CPU渲染和GPU渲染各自特点,优势,场景使用
  • 微信小程序横滑定位元素案例代码
  • 【GPT】代谢概念解读