寄存器

  • eax:32位长==4字节(0~31)
  • ax:16位长==2字节(0~15)
  • al:8位长==1字节 (0~7)
  • ah:8位长==1字节(8~15)

寄存器符号汇总

寻址方式

这里统一说四种:

  • 立即数寻址
  • 寄存器寻址
  • 直接寻址
  • 寄存器间接寻址

判断技巧
只要是数字(地址)或者等效符指定(类似 a equ 0h)都是立即数寻址
只要是只有寄存器,都是寄存器寻址
如果是寄存器外面加了‘[ ]’,则就是寄存器间接寻址
如果是变量名,那就是直接寻址

指令操作合法性


以mov指令,为例子(其余大概都相同),箭头表示可寻址到。
技巧:

  1. 首先判断转换位数(位数不同,直接pass)
  2. 之后判断目标

以下都默认位数正确
只要目标操作数是立即数,都不合法
只要源操作数是内存(寄存器间接寻址是访问内存,同时每条指令指令只能访问一次内存,即:如果一条语句中,源操作数与目的操作数都是访问内存,则不合法),都不合法
只要源操作数是寄存器(不包括自反),都不合法

例题:

外设操作

汇编语言中,CPU对外设的操作通过专门的端口读写指令来完成;
  读端口用IN指令,写端口用OUT指令。
  例子如下:

   IN AL,21H;表示从21H端口读取一字节数据到ALIN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AHMOV DX,379HIN AL,DX ;从端口379H读取1字节到ALOUT 21H,AL;将AL的值写入21H端口OUT 21H,AX;将AX的值写入端口地址21H开始的连续两个字节。(port[21H]=AL,port[22h]=AH)MOV DX,378HOUT DX,AX ;将AH和AL分别写入端口379H和378H

汇编语言学习笔记 - 杂记(寄存器,寻址方式,指令操作合法性)相关推荐

  1. 32位汇编语言学习笔记(45)--测试简单文件操作接口(完)

     这是<Assembly Language step by step programming with linux>书中的最后一个程序,也是全书中的最复杂的一个程序. 首先看一下这个程 ...

  2. 汇编语言学习笔记(十二)-浮点指令

    浮点数如何存储 浮点寄存器 浮点数指令 浮点计算例子 浮点高级运算 CMOV移动指令 浮点数如何存储 浮点数的运算完全不同于整数,从寄存器到指令,都有一套独特的处理流程,浮点单元也称作x87 FPU. ...

  3. 32位汇编语言学习笔记(36)--repne scasb指令

     repne scasb指令,用于扫描字符串,计算字符串的长度,如下两条指令: cld repne scasb 对应的等价指令是: scans:inc edi     dec ecx     je ...

  4. win32汇编语言学习笔记(三)

    汇编语言学习笔记(三) CH3.Windows汇编基础 .386 .model flat,stdcall option casemap:none 定义程序使用的指令集.工作模式 相应的还有:.8086 ...

  5. windows下32位汇编语言学习笔记

    windows下32位汇编语言学习笔记 第一章  第一章 背景知识 80x86处理器的存储器 4个数据寄存器 EAX,EBX,ECX,EDX EAX寄存器 所有API函数的返回值都保存在EAX里,注意 ...

  6. MIPS汇编语言学习笔记11:整数减法 (mult方法)

    任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...

  7. MIPS汇编语言学习笔记07:打印双精度浮点数

    课程原视频: https://www.bilibili.com/video/BV19J411y7pA?p=7 程序功能: 设定两个双精度浮点型数据,将其相加后打印输出. 代码: .datamyDoub ...

  8. 菜鸟的汇编语言学习笔记

    汇编语言学习笔记 1.1机器语言 计算机发展初期,人们都是用机器语言进行编程的,这也是人们能实现编程控制计算机的最低级别.那么机器语言是什么样子的呢?就是用0和1组成的一个串(形如011010101) ...

  9. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  10. C++学习笔记之对文件的操作2

    转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126680.html ** 什么都不说了,继续<C++学习笔记之对文件的 ...

最新文章

  1. 解决overfitting的方法
  2. spring+springmvc+springboot 常用注解
  3. 例题:青歌赛打分程序。去掉两个最高分,去掉两个最低分,再算平均分。主要学习数组和冒泡排序,什么情况下要定义数组...
  4. Linux从入门到精通系列之SHELL编程awk语法结构及案例解析
  5. Linux 中的零拷贝技术,第 2 部分
  6. 第二届「星斗奖」获奖名单正式公布
  7. Linux配置apache虚拟主机:静态文件
  8. android默认开机动画,修改安卓开机动画(除了部分系统 如MIUI等)
  9. 面试中死锁的考点总结(死锁的定义、产生原因、四个必要条件、如何预防)
  10. Java Web 项目SSO实战
  11. 街霸5 android,MD街头霸王5免安装版
  12. 【POJ3190】Stall Reservations
  13. 轻松学习分布式|系列2|负载均衡算法。
  14. Django 数据流程图
  15. python制造童年回忆:猫和老鼠小游戏【附源码】
  16. 【软件技能】Perl 基础用法
  17. A fatal exception has occurred.Program will exit。可能是系统装有多个java编程程序。
  18. Android 11.0 修改添加的默认文件夹为9宫格样式
  19. 根据脸部毛孔生长方向去护肤
  20. 2020电赛省赛实战(二)ADS1292心电检测仪

热门文章

  1. crm系统是什么很棒ec实力_哪个CRM系统好
  2. oracle写一个全量刷新,Oracle物化视图定时全量刷新以致归档日志骤增
  3. php元换成万元,1000元怎么换算成万元(元怎么换成万元)
  4. 浏览器饿了么cookie提取
  5. 新品发布 | 麒麟产业服务:麒麟云上产业园,打造数字新基建
  6. 谷歌地图kml能透明吗_如何打开KML和KMZ文件并与卫星影像叠加
  7. HttpServletRequest获取中文参数乱码问题
  8. allegro怎么导出PCB文件里封装
  9. Speedoffice(word)怎么撤回上一步的操作
  10. 在linux下如何修改DNS地址