数据的表示和类型
二进制:二进制的表示元素是0和1,书写时,在数据后面紧跟一个字母B,如:0101B
八进制:八进制的表示元素是:0-7,书写时,在数据后面紧跟字母Q,如1234Q
十六进制:基本元素是0-9,A-F,其中A-F依次代表10-15
▮书写时,数据后面紧跟字母H,当十六进制的第一个字符是字母时,在其前面必须添加一个“0”
寄存器
16位寄存器:

  • 4个数据寄存器:AX,BX,CX,DX,每个寄存器又可分为2个8位寄存器

数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间

  • 2个变址寄存器:DI和SI

它们可做一般的存储器的指针使用,在字符串操作指令的执行过程中,对它们有特定的要求,且具有特殊的功能

  • 2个指针寄存器:SP和BP

(1)BP为基指针寄存器,用它可直接存取堆栈中的数据
(2)SP为堆栈指针寄存器,用它只可访问栈顶

  • 4个段寄存器:ES,DS,CS,SS


  • 1个标志寄存器:FLAG
  • 1个指令指针寄存器:IP

  • 物理地址的形成模式
    逻辑段的起始地址(俗称段地址)必须是16的倍数,即最低4位二进制必须全为0;
    物理地址PA=段地址*16+偏移量
    段寄存器的引用
    取指令所用的段寄存器和偏移量一定是用CS和IP;
    堆栈操作所用的段寄存器和偏移量一定是SS和SP;
    串操作的目标操作数所用的段寄存器和偏移量一定是ES和DI;


    操作数的寻址方式

    1.立即寻址方式:MOV AH,80H ADD AX,1234H
    2.寄存器寻址方式 :MOV AH,BH
    3.直接寻址方式:MOV AX,[1234H]
    4.寄存器间接寻址方式:MOV BX,[DI]
    5.寄存器相对寻址方式:MOV BX,[SI+100H]
    6.基址加变址寻址方式:MOV BX,[BX+SI]
    7.相对基址加变址寻址方式:MOV BX,[BX+SI+100H]

    合法标识符
    标识符最多由31个字母,数字及规定的特殊字符(?@ _ $)等组成,不能用数字开头
    关键字不能作为标识符
    常见的偏移量伪指令
    Even、Align、org
    Even 偶对齐伪指令 本伪指令下面的内存变量从下一个偶地址单元开始分配
    Align NUM,NUM必须是2的幂
    ORG 数值表达式,本伪指令下面的内存变量从该“数值表达式”所指定的偏移量开始分配。
    重复说明符
    count DUP(表达式,表达式…)
    例如:BUFFER DB 100DUP(?),重复100个?
    LEA指令和OFFSET的联系与区别
    相同:都是取偏移指令的操作
    注意事项:1.lea、offset指令的源操作数必须是内存操作数
    2.lea、offset指令的目的操作数必须是16位寄存器
    3.lea指令不影响状态标志寄存器内容。
    区别:4.offset指令的源操作数不能是下标(类似数组),lea可以。
    5.offset在汇编时生效,lea在指令执行时才生效。
    内存变量和标号的属性
    1.类型属性操作符:TYPE是返回该变量所占字节数,或标号的远近类型。
    2.长度属性操作符:LENGTH是针对内存变量的操作符,它返回重复操作符DUP中的重复数。如果有嵌套的DUP,只返回最外层的重复数。如果没有DUP,则返回1
    3.容量属性操作符:SIZE是针对内存变量的操作符
    SIZE(变量)=LENGTH变量×TYPE变量
    强制属性操作符
    数据类型 PTR 地址表达式
    例如:MOV byte ptr[BX],1H
    存储单元别名操作符
    操作符THIS的一般格式为:<变量名>equ this <类型>
    <变量名>DB|DW|DD <表达式>
    例如:WBUFFER EQU THIS WORD
    BUFFER DB 20DUP(?)
    进制伪指令RADIX
    .RADIX exp 伪指令前面要用点开始,exp的值必须是[2,16]内的一个整数
    .radix 8
    B1 DB 10,11,12 这三个数是八进制
    等价语句
    符号名 EQU 表达式 ,其作用是用左边的符号名来代表右边的表达式
    例如:GREETING EQU ‘How are you!’
    在该定义之后,就可以使用符号GREETING 来代表字符串‘How are you!’

指令系统

指令系统是CPU指令的集合,CPU除了具有计算功能的指令外,还有一些实现其他功能的指令,也有为某种特殊的应用而增设的指令。
指令按其功能分成以下几大类:数据传送指令、标志位操作指令、算术运算指令、逻辑运算指令、移位操作指令、位操作指令、比较运算指令、循环指令、转移指令、条件设置字节指令、字符串操作指令、ASCII-BCD码运算调整指令和处理器指令等。

数据传送指令

  • 传送指令MOV
    格式如下:MOV Reg/Mem,Reg/Mem/Imm
    寄存器Reg 存储器Mem 立即数Imm

注意:①两个操作数的数据类型要相同,要同为8位、16位
②两个操作数不能同时为段寄存器,
③代码段寄存器CS不能为目的操作数,但可作为源操作数
④立即数不能直接传给段寄存器
⑤立即数不能作为目的操作数
⑥指令指针IP,不能作为MOV指令的操作数
⑦两个操作数不能同时是存储单元

  • 传送—— 填充指令
    是把位数短的数据传送给位数长的目的操作数
    MOVSX/MOVZX Reg/Mem, Reg/Mem/Imm
    MOVSX用符号位填充,MOVZX用0来填充

  • 交换指令XCHG
    XCHG Reg/Mem,Reg/Mem
    作用是交换两个寄存器,寄存器不能是段寄存器,两个操作数不能同时为内存变量

  • 取有效地址指令LEA
    指令LEA是把一个内存变量的有效地址送给指定的寄存器,格式:LEA Reg,Mem
    LEA指令和OFFSET的联系与区别
    相同:都是取偏移指令的操作
    注意事项:1.lea、offset指令的源操作数必须是内存操作数
    2.lea、offset指令的目的操作数必须是16位寄存器
    3.lea指令不影响状态标志寄存器内容。
    区别:4.offset指令的源操作数不能是下标(类似数组),lea可以。
    5.offset在汇编时生效,lea在指令执行时才生效。

  • 取段寄存器指令
    LDS/LES Reg,Mem
    该组指令的功能是把内存单元的一个低字传送给指令中指定的16位寄存器,把随后的一个高字传给相应的段寄存器。
    若Reg是16位寄存器,那么Mem必须是32位指针

  • 进栈操作
    PUSH Reg/Mem

  • 出栈操作
    POP Reg/Mem

  • 转换指令XLAT
    无操作数,但有两个隐含操作数BX和AL
    指令格式如下:XLAT/XLATB,其功能是把BX的值作为内存字节数首地址,下标为AL的数组元素的值传送给AL
    FLAG寄存器

  • ZF标志,零标志:计算结果为0置1,不为0置0

  • PF标志,奇偶标志:计算结果二进制数有奇数个1还是偶数个1,奇数个1写0,偶数个1写1

  • SF标记,符号标记:运算结果为正,置0;为负,置1

  • CF标志,进位标志:最高位是否有进位或错误,有置1,没有置0

  • OF标志,溢出标志:8位数是否超过-128到127,是溢出置1

  • AF标志,辅助进位标志,低4位是否向高4位进位或借位,是置1,否置0

算术运算指令

加法指令
1.ADD加法指令:把源操作数的值加到目的操作数
2.ADC带进位加指令:把源操作数和进位标志CF一起加到目的操作数
3.INC指令:操作数的值加1
4.交换加指令XADD:先交换两个操作数的值,在镜像加法运算

减法指令
1.SUB减法指令:从目的操作数中减去源操作数
2.SBB带借位减法:把源操作数和标志位CF的值从目的操作数中一起减去
3.DEC减法:把源操作数的值减去1
4.求补指令NEG:改变操作数的正负号
乘法指令
MUL指令:隐含目的操作数,把源操作数和AL(AX)的值相乘保存到AX(DX+AX)中
除法指令
DIV指令:

类型转换指令

系统提供了四条数据类型转换指令:CBW、CWD、CWDE、CDQ
CBW字节转换为字指令:隐含操作数AH和AL,其功能是用AL的符号位去填充AH
CWD字转换为双字指令:隐含操作数DX和AX,其功能是用AX的符号位去填充DX

逻辑运算指令

逻辑与指令
指令格式:AND Reg/Mem,Reg/Mem/Imm

逻辑或指令
指令格式:OR Reg/Mem,Reg/Mem/Imm

逻辑非
指令格式:NOT Reg/Mem


TEST指令
格式:TEST Reg/Mem,Reg/Mem/Imm
功能是对两个操作数进行逻辑与运算,但结果不送至目的操作数,只是影响状态标志
作用是检测一些条件是否满足,但又不希望改变操作数,即使用于检查一个字节或字中的某些特定位是否有一位为1

移位指令

1.SHL指令(逻辑左移)
相当于将数倍增

2.SHR指令(逻辑右移)
将一个无符号数向右移动,左边出现空位补0,右边低位移至CF

3.SAL指令(算术左移)
SAL指令同SHL,实际上SHL和SAL是同一条指令的两种助记符,它们执行的操作完全一样。
4.SAR指令(算术右移)
SAR类似于SHR,SAR同SHR的区别是:SHR连同符号位一起右移,左边最高位出现的空位补0;而SAR右移时符号位不动,左边出现的空位补上符号位的值。

其中值得注意的一点是:如果目的操作数是负数,且其中具有1的位数移出后,则SAR指令产生的结果与用整数IDIV指令产生的结果不一样。
例如:-5经SAR右移之后得-3,IDIV之后为-2

5.ROL指令(循环左移)
功能:每执行一次,把最高位移到最低位,同时还把最高位移到CF

6.ROR指令(循环右移)
与ROL指令类似

7.RCL指令(通过进位循环左移)
RCL指令对目的操作数1字节或字中的各位循环左移,进位标志CF被看作目的操作数的“一部分”。每执行一次,CF的值循环移入目的操作数的低位,而目的操作数的最高位移入CF。

8.RCR指令(通过进位循环右移)
RCR与RCL类似,

比较指令CMP
功能:用第二个操作数去减第一个操作数,并根据所得的差设置有关标志位,为随后的条件转移指令提供条件,但并不保存该差,所以不会改变指令中的操作数。
循环指令
CX寄存器中存放循环次数,一般循环跳转是,CX先减1,后判断CX是否为0
LOOP 标号

相等或为零循环指令
LOOPE/LOOPZ 标号



LOOPNE/LOOPNZ 标号


循环计数器为零转指令

转移指令
1.无条件转移指令JMP
格式:JMP 标号
2.条件转移指令



字符串操作指令
字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是隐含指针DS:SI或ES:DI来指定的。
字符串操作指令可对内存单元按字节、字或双字进行处理,并能根据操作对象的字节数使变址寄存器SI和DI增减1、2、4.
具体规定如下:
(1)当DF=0时,变址寄存器SI(和DI)增加1、2、4
(2)当DF=1时,变址寄存器SI(和DI)减少1、2、4
实例:字符串输出
方法1:利用40号中断功能,BX=1,CX=输出字符个数,DS:DX指向要输出的串首

方法2:利用9号中断功能。DS:DX指向要输出的串首,一直输出到“$”结束。

字符串输入
方法:利用OAH号中断功能,DS:DX指向存入的首地址。其中,DS:DX内容是输入的最大字节数,是需要事先设置好的;DS:DX+1是实际输入的字节数,是输入成功后的返回值;DS:DX+2是真正的存入的内容首位置。


字符串操作指令

  • 取字符串数据指令LODS
    格式:LODS source ;source为字符串源地址
    LODSB/LODSW ;字节/字
    功能:LODS指令将SI指向的源串元素根据其地址表达式的属性来决定读取一个字节、字或双字,将其传送到AL,AX,同时根据DF和串的类型修改SI的内容使之指向串的下一个元素。
    该指令不涉及目标串,故DI的值保持不变。一般使用LODS指令不加重复前缀。

-存字符串数据置零STOS
格式:STOS 内存地址 ;内存地址为目标字符串的目的地址
STOSB/STOSW ;字节/字
功能:STOS指令将累加器AL、AX或EAX的内容传送到由ES:DI所指向的目的串中,同时根据DF和串的类型修改DI以指向下一个串元素。
注意:LODS,STOS指令都不影响状态标志寄存器的状态。

  • 字符串传送指令MOVS
    格式:MOVS 目的串的目的地址;源字符串源地址
    MOVSB/MOVSW ;字节/字
    功能:MOVS指令是把DS:SI所指向的字节、字或双字传送给ES:DI所指向的内存单元,并根据标志位DF和串的类型修改寄存器DI和SI。指令的执行不影响任何标志位。
    MOVS指令前可以加前缀REP成为REP MOVS,其作用如同以下的指令序列:
    L:MOVS
    LOOP L

  • 字符串比较指令CMPS
    格式:CMPS source,destination
    CMPSB/SMPSW
    CMPSD
    功能:CMPS指令是把DS:SI和ES:DI指向的字节、字或双字的值相减,将结果反映到状态标志位上,而不送至任何一个操作数。同时修改SI和DI使之指向下一个元素。标志位AF,CF,OF,PF,SF和ZF反映了目的串和源串对应元素之间的关系。

  • 字符串扫描指令SCAS
    格式:SCAS destination ;destination 为扫描累加
    SCASB/SCASW ;器值的字符串地址
    SCASD ;字节/字
    功能:SCAS指令从累加器AL,AX中减去由ES:DI指向的目标串中的元素,结果不送到任何地方,只改变状态标志位;同时,根据DF和串的类型修改DI,使之指向串的下一个元素。受影响的标志位包括AF,CF,OD,PF,SF和ZF.

十分重要:实现一个字符的输入
AH=1
INT 21H
AL=输入的字符实现一个字符的输出
AH=2
DL=输出的字符
INT 21H

汇编语言期末复习不挂科——知识点总结相关推荐

  1. 算法设计与分析期末复习不挂科

    算法的基本概念 算法概念 通俗讲:算法是解决问题的一种方法或一个过程 严格讲:算法是解某一特定问题的一组有穷规则的集合 且满足以下性质: 有限性:算法在执行有限步之后必须终止 确定性:算法的每一个步骤 ...

  2. 数据结构期末复习资料:重点总结+题库(含答案详解),助你一天复习数据结构,高分通过数据结构期末考试!不挂科!

    10小时不太可能了,但是100个小时完全OK的! 送你份独家突击复习资料,以下正文: 据说在期末考试前夕,同学们的学习能力会变强!但是数据结构,毕竟作为一门特别难的科目,如果平时没有学好,那么很可能就 ...

  3. 陶哲轩自述考砸经历:智商高达230的数学天才,却因没复习险些挂科

    机器之心报道 编辑:蛋酱.小舟 很难相信,智商高达 230 的陶哲轩(Terence Tao),也会在一场考试中险些挂科.从这篇自述文章中,我们可以近距离感受到,数学天才的荣耀背后,是多少个不懈探索的 ...

  4. 计算机网络期末复习提纲(全知识点总结)

    计算机网络期末复习提纲全知识点总结 第一章 概述 1.基本概念 - 链路,结点,协议和服务,实体和对等实体,各层PDU - C/S模式,B/S模式,P2P模式 - LAN,WAN,MAN,PAN的划分 ...

  5. c语言输出矩形及对角线,[新]C语言期末复习,经典练习题+知识点总结+模拟考题 三位一体,完胜c语言!!!!考期必备神器...

    C语言期末复习(平时练习答案) [特别适用于千千万北航学子] 考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换....] 第二次大作业- 前驱.后继字符 1. [问题描述] 从键盘输入一个字符 ...

  6. C语言期末复习划重点啦!赶上复习的末班车,祝你期末考试不挂科!

    C语言是当代大学生学习及生活中的必备基础知识,应用十分广泛,尤其是现在是期末考试期,下面为大家带来C语言知识期末总结. 第一章 C 语言基本知识 [考点 1 ] C 程序 用C语言编写的程序称为C语言 ...

  7. c51汇编语言如何定义全局变量_汇编语言期末复习笔记(七)

    第三章 汇编语言程序格式(上) 写在前面:这一部分开始复习汇编语言程序格式,包括参数的表达.变量的定义等.如有错误欢迎指正,感谢! 1.硬指令和伪指令 硬指令:使CPU产生动作,并在程序中执行时才处理 ...

  8. dx 汇编dec_汇编语言期末复习笔记(四)

    第二章 8086的指令系统(上) 写在前面:这一部分开始复习汇编语言程序的指令系统,主要是数据传送类指令和算术运算类指令.如有错误欢迎指正,感谢! 一.数据传送类指令 1.传送指令movmov reg ...

  9. C++期末复习超详细总结知识点(期末冲刺)

    0.c++期末总结 更新时间:2022年8月21日 pdf版下面评论置顶有链接 重点已经用黑体和高亮表示,属于记忆理解部分,可收藏使用 后面考完找时间分享下c++面向对象程序设计课后习题答案(谭浩强版 ...

  10. SCAU 汇编语言 期末复习 (上)

    第一章 1.储存单位 存储容量:bit .Byte. Word 1 kilobytes=210bytes=1024bytes 1megabyte(MB)=220bytes 1gigabyte(GB)= ...

最新文章

  1. linux c openssl rsa 加解密
  2. 普通函数与函数模板的区别
  3. How to apply for the PG studies as a UG
  4. 009-mac下记事本工具 sublime text3
  5. ubuntu11.10中配置OGRE1.8
  6. 常量表达式不允许函数调用_SQLite特殊索引之表达式索引
  7. tensor.view(*shape) 函数
  8. django会话跟踪技术
  9. 解决企业人力短缺难题?且看RPA如何大展身手!
  10. win10没有声音(扬声器一直显示未插入)
  11. 20组事后诸葛亮会议总结
  12. el-input 正则,非负数且只有一个小数点
  13. 通过AWS创建无服务器的动态DNS系统
  14. 格密码与最短向量上界
  15. payjs 源码_GitHub - wlijie/payjs_test: PAYJS 小程序支付框架与示例
  16. 不使用机器学习的机器视觉_我关于使用机器学习进行体育博彩的发现使博彩公司总能胜出
  17. POJ 3009 Curling 2.0 {深度优先搜索}
  18. Color a Tree
  19. 用三种方式实现轮播图
  20. Swoft 踩坑笔记六 - 代码调试

热门文章

  1. sofa与springboot的入门案例
  2. 海康录制视频文件无法播放以及FFmpeg最新版下载
  3. 观点|蚂蚁金服玉伯:我们是如何从前端技术进化到体验科技的?
  4. grub4dos linux 设备,解决方案:在Grub4Dos硬盘上安装Fedora / CentOS Linux操作系统
  5. 一图秒懂!“天使投资、VC、PE、A轮、B轮、C轮融资”的关系
  6. Cocos Creator三消小游戏(TS 01版)
  7. 32g的u盘速度测试软件,ToShiBa 东芝4G 8G 16G 32G 64G U盘量产教程(已测)
  8. 关于vue的@click传递
  9. Word,PDF,PPT,TXT之间的转换方法。
  10. 实现socket监听所有网络命名空间