使用教材为
《微型计算机原理与接口技术》(慕课版)
孙丽娟、李爱群、陈燕俐、周宁宁、邓玉龙编著
默认存储器单元的地址编排顺序从上往下,地址从低向高编排

微机原理复习笔记一
微机原理复习笔记三
微机原理复习笔记四

微机复习笔记二

  • 1. 常用伪指令
    • 数据字义伪指令
    • 符号定义伪指令
  • 2. 常用运算符
    • SEG运算符
    • OFFSET运算符
    • $运算符
    • PTR运算符
  • 3. 常用基本指令
    • MOV 目标操作数,源操作数
    • LEA 目标操作数,源操作数
    • PUSH 源操作数
    • POP 目标操作数
    • ADD 目标操作数,源操作数
    • SUB 目标操作数,源操作数
    • INC 目标操作数
    • DEC 目标操作数
    • CMP 目标操作数,源操作数
    • JMP
    • 条件转移指令
    • NOT 目标操作数
    • AND 目标操作数,源操作数
    • OR 目标操作数,源操作数
    • XOR 目标操作数,源操作数
    • 移位指令
  • 4. 子程序与宏指令
    • CALL
    • RET
    • 子程序定义格式
    • 宏指令定义
    • 两者异同点
  • 5. DOS功能调用
    • 01H
    • 02H
    • 09H
  • 6. 目标程序生成步骤

1. 常用伪指令

数据字义伪指令

DB:字节型,8位
变量名   DB   一个或多个用“,”间隔的单字节数
按照定义顺序依次存放在对应的存储器单元中
eg:

BUF0 DB 12H
BUF1 DB 34H,'A'
BUF2 DB ?,?,?
BUF3 DB 3 DUP(?)//等同于3个?
  • ?表示随机数
  • DUP:重复操作符,左边是重复次数,右边括号内为重复的内容

DW:字型,16位
变量名   DB   一个或多个用“,”间隔的双字节数
双字节数的低位字节存放在低地址单元,高位字节存放在高地址单元
eg:

N1 DW 'DA',46H,'D'//字符D占两个存储单元
MOV AX,N1+1//执行指令后(AX=4644H)
  • DW后的字符串常数只能是单引号括起的一个或两个字符
  • 第二条MOV指令,用N1+1可以访问N1变量的内容为44H和46H两个存储单元

DD:双字型
变量名   DB   一个或多个用“,”间隔的四字节数
eg:

N2 DD 12345678H
  • 每次存取均为4个连续的字节单位

符号定义伪指令

等值伪指令 EQU
符号名 EQU 表达式
eg:

COUNT EQU 54H

等号伪指令=
符号名 = 表达式
eg:

COUNT = 56H
  • = 与EQU功能相同
  • 区别:EQU定义的常量在后继指令中值不能更改,若要改,则需改原定义语句; = 定义的常量在后继指令中值可以更改
COUNT = 40H//COUNT的值为40H
COUNT = 53H//COUNT的值改为53H

2. 常用运算符

SEG运算符

返回对于逻辑段的段基址
SEG 逻辑段名称或符号或变量
eg:

MOV AX,SEG BUF
//若变量BUF对应的段基址为2000H,则(AX=2000H)

OFFSET运算符

返回相对于首段的偏移地址
OFFSET 标号或变量
eg:

MOV BX,OFFEST BUF
//取出BUF变量的偏移地址到BX

$运算符

返回当前汇编地址计数器的值,通常用来计算变量在逻辑段中占用的字节总数
eg:

BUF DB 'ABCDE'
L1 EUQ $-BUF
S DB 'DFGHJ'
L2 EUQ &-BUF//则L1=5,L2=10

PTR运算符

临时修改变量属性,使源、目两个操作数类型属性一致,也可用于修改标号的类型属性
类型说明符 PTR 标量或变量的地址表达式
eg:

SUB BYTE PTR [BX],10
MOV BL,BYTE PTR [BX+SI]
  • 双操作数指令中(如MOV、ADD)
源操作数 目标操作数 使用条件
立即数 直接寻址的存储器操作数 两者不一致
立即数 除直接寻址以外的所有存储器操作数 无论相同与否,后者都必须用PTR说明属性
直接寻址的存储器操作数 直接寻址的存储器操作数 有一方存在,但两者属性不一致
  • 单操作数指令中(如INC、DEC)

  a.操作数为除直接寻址以外的所有存储器操作数
  b.操作数为直接寻址的存储器操作数,具体情况而定

3. 常用基本指令

MOV 目标操作数,源操作数

功能:把源操作数传送到目标操作数中,源操作数不变
不影响6个状态标志位

目标操作数 源操作数
寄存器操作数、内存操作数 立即数
寄存器操作数、内存操作数、段寄存器 寄存器操作数
寄存器操作数、内存操作数 段寄存器
寄存器操作数、段寄存器 内存操作数
  • CS 不能做目标寄存器
  • 不能向段寄存器写入立即数
  • IP 不能作为传送目标也不能作为源操作数
  • 源、目操作数要等长,即类型属性要一致
  • 源操作数为立即数时,若目标单元的字长大于立即数的字长,则立即数将按照目标单元的字长转换为等长,再传送

eg:

MOV AX,0FEH//(AX=00FEH)
MOV AX,-2//(AX=FFFEH)

LEA 目标操作数,源操作数

功能:将源操作数的偏移地址传送给目标操作数
不影响6个状态标志

目标操作数 源操作数
寄存器操作数 内存操作数

eg:

LEA BX,BUF
//等价于 MOV X,OFFSET BUF

PUSH 源操作数

功能:将源操作数压入堆栈
不影响6个状态标志
源操作数:立即数、寄存器操作数、内存操作数,若为内存操作数时,需考虑使用PTR运算符
操作过程:
  a.堆栈指针向低地址方向调整(SP-2/ESP-4)
  b.将操作数送入堆栈指针所指向的栈顶单元

PUSHA:把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈

eg:

PUSH AX

POP 目标操作数

功能:从堆栈中弹出一个字或双字,将其送入目标操作数中
不影响6个状态标志
目标操作数:寄存器操作数(除CS外)、内存操作数,若为内存操作数时,需考虑使用PTR运算符
操作过程:
  a.将堆栈中取出字或双字送入目标操作数中
  b.堆栈指针向高地址方向调整(SP+2/ESP+4)

POPA:把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈

eg:

POP AX
  • PUSH、POP 指令的操作数不能为8位

ADD 目标操作数,源操作数

功能:将源操作数和目标操作数相加,结果送入目标操作数
影响6个状态标志

SUB 目标操作数,源操作数

功能:目标操作数减去源操作数,结果送入目标操作数
影响6个状态标志

目标操作数 源操作数
寄存器操作数、内存操作数 立即数、寄存器操作数
寄存器操作数 内存操作数
  • 源、目标操作数不能同时为段寄存器
  • 源、目操作数要等长,即类型属性要一致
  • 源操作数为立即数时,若目标单元的字长大于立即数的字长,则立即数将按照目标单元的字长转换为等长,再进行计算

eg:

ADD BYTE PTR [BX],0FAH//高位为字母时,前加0
SUB AX,0F23FH

INC 目标操作数

功能:将目标操作数加1后的结果送入目标操作数
影响A、O、P、S、Z 5个状态标志,不影响C标志
目标操作数:寄存器操作数、内存操作数,若为内存操作数,需考虑使用PTR运算符

DEC 目标操作数

功能:将目标操作数减1后的结果送入目标操作数
影响6个状态标志,若

  • 操作数非零数,C标志置1
  • 操作数为零,C标志置0
  • 目标操作数是80H(-128)、8000H(-32768)以及80000000H(-2147483648)时,求补运算后操作数不变,O标志置1

目标操作数:寄存器操作数、内存操作数,若为内存操作数,需考虑使用PTR运算符

CMP 目标操作数,源操作数

功能:目标操作数减去源操作数,目标操作数不变,依据减法运算的情况设定A、C、O、P、S、Z 6个状态标志
影响6个状态标志

目标操作数 源操作数
寄存器操作数、内存操作数 立即数、寄存器操作数
寄存器操作数 内存操作数
  • 源、目标操作数不能同时为段寄存器
  • 源、目操作数要等长,即类型属性要一致
  • 源操作数为立即数时,若目标单元的字长大于立即数的字长,则立即数将按照目标单元的字长转换为等长,再进行计算

常搭配条件转移指令使用
eg:

CMP BYTE PTR [BX],45H
JC NEXT
//若[BX]间址的内存单元中的数小于45H,则程序转移到标号NEXT处

JMP

功能:无条件转移到目标指令处

直接 间接
段内 JMP 标号
JMP SHORT  标号
JMP  寄存器操作数
JMP  内存操作数
段间 JMP  标号 JMP  内存操作数

eg:

JMP NEXT//无条件转移到到标号NEXT处

条件转移指令

统一格式:条件转移指令标志符 目标地址标号
功能:如果前提条件满足,则控制转移到目标指令处

  • 根据状态标志位C、Z、S、P、O的当前状态
操作码助记符 转移的条件 中文描述
JC (C)=1 低于转移
JNC (C)=0 不低于转移
JZ (Z)=1 等于转移
JNZ (Z)=0 不低于转移
  • 根据无符号数的大小
    根据比较指令“CMP X,Y”的结果
操作数助记符 转移条件 中文描述
JA X > Y 不低于或不等于转移
JNA X ≤ Y 低于或等于转移
JC X < Y 低于转移
JNC X ≥ Y 不低于转移
  • 根据有符号数的大小
    根据比较指令“CMP X,Y”的结果
操作数助记符 转移条件 中文描述
JG X > Y 不小于或不等于转移
JNG X ≥ Y 不小于转移
JL X < Y 不大于或不等于转移
JNL X ≤ Y 不大于转移

eg:

CMP AH,0
JZ NEXT//当(AH)=0时,转移
CMP CH,CL
JA NEXT//无符号数
CMP CH,CL
JG NEXT//有符号数
操作数助记符 转移条件 中文描述
LOOP (CX)-1→(CX),若(CX)≠ 0
或(ECX)-1→(ECX),若若(ECX)≠ 0
循环转移

eg:

MOV CX,5
AGAIN:
LOOP AGAIN//设定循环次数为5

NOT 目标操作数

功能:将目标操作数按位取反
操作数:通用寄存器操作数、内存操作数,若为内存操作数,需考虑使用PTR运算符
不影响6个状态标志位
eg:

NOT AX//(AX)=0FF00H,指令执行后(AX)=00FFH

AND 目标操作数,源操作数

功能:将源、目两个操作数进行按位与运算,结果送入目标操作数中
指令执行后,将C标志和O标志置0,按结果设置P、S、Z标志
eg:

AND AH,0F0H//(AX)=89H,指令执行后(AX)=80H

OR 目标操作数,源操作数

功能:将源、目两个操作数进行按位或运算,结果送入目标操作数中
指令执行后,将C标志和O标志置0,按结果设置P、S、Z标志
eg:

OR AH,07H//(AX)=30H,指令执行后(AX)=37H

XOR 目标操作数,源操作数

功能:将源、目两个操作数进行按位异或运算,结果送入目标操作数中
指令执行后,将C标志和O标志置0,按结果设置P、S、Z标志
eg:

XOR AH,0F0H//(AX)=55H,指令执行后(AX)=A5H

移位指令

统一格式:助记符 操作数,移位次数
开环移位指令:SHL,SAL,SHR,SAR
闭环移位指令:RCL,RCR,ROL,ROR
图片来自中国慕课

操作数 移位次数
寄存器操作数 立即数或CL寄存器中的数值

移位指令执行后

  • C位为最后移入的位值
  • 移位次数为1时,移位后最高位的位值发生变化,O标置1
  • 开环移位指令,P、S、Z根据移位结果进行设定
  • 闭环移位指令,P、S、Z不受影响

eg:

SHR AH,1//(AH)=80H,指令执行后(AH)=40H
ROL AH,8//(AH)=55H,指令执行后(AH)=55H

4. 子程序与宏指令

CALL

功能:由主程序转到子程序

直接 间接
段内 CALL 过程名 CALL  寄存器操作数
CALL  内存操作数
段间 CALL  过程名 CALL  内存操作数
  • 断点:CALL指令的下一条指令

控制过程:

  • 段内:(SP)-2→(SP),将断点的偏移地址压入堆栈,再将子程序入口的偏移地址→(IP)
  • 段间:(SP)-4→(SP),将断点的段基址和偏移地址依次压入堆栈,再将子程序入口的段基址→(CS),偏移地址→(IP)

RET

格式:
RET
RET N
功能:程序控制返回到主程序断点所在的指令继续执行

  • 指令操作数为保存在堆栈顶的数据,若为段内,2字节数据,即要确保为断点偏移地址,若为段间,4字节数据,即要确保为断点的段基址和偏移地址
  • RET N指令,首先完成RET功能,然后将堆栈指针下调N个字节

子程序定义格式

过程名 PROC 属性
    子程序实体
    RET
过程名 ENDP

  • 过程名:子程序名,以字母开头,长度≤31,经汇编后,过程名就是子程序第一条指令的地址
  • PROC/ENDP是子程序的定界语句
  • 属性,有两种描述
    NEAR(或缺省)代表该子程序和调用CALL指令在同一代码段
    FAR代表该子程序和调用CALL指令不在同一代码段

eg:

XXXY PROCPUSH BXPOP  AXRET
XXXY ENDP

宏指令定义

定义调用:
宏名 MACRO <形参表>
   宏体
   ENDM

  • MACRO/ENDM是宏体的定界语句
  • 宏名是符合语法的标识符
  • 每个形参之间用“,”隔开

调用格式:
宏名 <实参表>

eg:

ABS MACRO VAR//求VAR的绝对值ENDM
//主程序内
ABS BX//求BX的绝对值

两者异同点

同:简化程序设计
异:

  • 宏指令调用在汇编过程由汇编程序完成,在汇编时将宏体代替宏名,有多少次宏调用,就有多少次宏体的插入,并不能简化程序目标,不能节省目标程序所占内存空间;子程序由CPU完成,主程序多次调用同一个子程序,目标程序的代码段中,子程序的代码仍是一个,可节省内存空间
  • 子程序在执行时,每一次调用都要保护断点、保护现场,返回时,要恢复现场、恢复断点,增加程序时间;宏指令不需要,程序执行速度快
  • 宏指令通过形参和实参结合实现参数传递;子程序不是

5. DOS功能调用

格式:
MOV AH,功能号
设置入口参数
INT   21H
分析出口参数

  • DOS调用的功能号都存放在AH寄存器中

01H

等待从键盘键入一个字符,有回显,响应Ctrl+C
入口参数:无
出口参数:AL= 按键的ASCII码,若AL= 0,表明按键是功能键、光标键,需再次调用本功能,才能返回按键的扩展码
eg:

MOV AH,1
INT 21H

02H

显示一个字符,响应Ctrl+C

入口参数:DL=待显字符的ASCII码
出口参数:无

  • 该功能破坏AL寄存器的内容

eg:

MOV DL,'A'
MOV AH,2
INT 21H//屏幕上显示一个字符A

09H

显示字符串,响应Ctrl+C
入口参数:DS:DX=字符串首地址,字符串必须以‘$’(ASCII码为24H)为结束标志
出口参数:无

  • 该功能破坏AL寄存器的内容

eg:

//在屏幕上显示HELLO
DATA SEGMENT USE16
MESG DB 'HELLO','$'
DATA ENDS//定义数据段
CODE SEGMENT USE16ASSUME CS:CODE,DS:DATA//定义代码段
BEG: MOV AX,DATAMOV DS,AX
LAST:MOV AH,9 MOV DX,OFFSET MESGINT 21H//09HDOS调用       MOV AH,4CHINT 21H//返回DOS
CODE ENDSEND BEG

6. 目标程序生成步骤

汇编语言源程序可以没有数据段和堆栈段,但是一定要有代码段

堆栈段可以有程序员赋值也可以由操作系统赋值

通知汇编程序,源程序到此结束的是END语句

  • 编辑
    调用编辑程序生成汇编源文件
    汇编源文件扩展名为asm
  • 汇编
    将汇编源程序汇编成由机器指令组成的目标文件
    目标文件扩展名为obj
  • 链接
    将一个或多个目标文件和库文件合成一个可执行文件
    可执行文件扩展名为exe

《微型计算机原理与接口技术》复习笔记(二)相关推荐

  1. 10个微型计算机应用的例子,微型计算机原理与接口技术 复习资料

    微型计算机原理与接口技术 复习资料 一.问答题 1.下列字符表示成相应的ASCII码是多少? (1)换行 0AH (2)字母"Q" 51H (3)空格 20H 2.下列各机器数所表 ...

  2. 微机原理与接口技术复习笔记(1)——微型计算机概述

    作者:BerenCamlost 目录 作者:BerenCamlost 第一章 微型计算机概述 1.1 ASCII码 1.2 微机的基本组成 1.3 总线 1.4 微机的工作过程 第一章 微型计算机概述 ...

  3. 《微型计算机原理与接口技术》复习笔记(四)

    使用教材为 <微型计算机原理与接口技术>(慕课版) 孙丽娟.李爱群.陈燕俐.周宁宁.邓玉龙编著 微机原理复习笔记一 微机原理复习笔记二 微机原理复习笔记三 微机原理复习笔记四 中断系统 1 ...

  4. 《微型计算机原理与接口技术》期末总复习 —— 一篇匆匆忙忙的复习笔记

    这篇复习笔记是针对<微型计算机原理与接口技术>后面几章的 前面的汇编复习内容在 "零.学习笔记总目录" 的 "汇编考前复习" 中 ✅ 这篇笔记中可能 ...

  5. 《微型计算机原理与接口技术》复习笔记(三)

    使用教材为 <微型计算机原理与接口技术>(慕课版) 孙丽娟.李爱群.陈燕俐.周宁宁.邓玉龙编著 微机原理复习笔记一 微机原理复习笔记二 微机原理复习笔记四 微机原理复习笔记三 1. 存储器 ...

  6. 《微型计算机原理与接口技术》复习笔记(一)

    使用教材为 <微型计算机原理与接口技术>(慕课版) 孙丽娟.李爱群.陈燕俐.周宁宁.邓玉龙编著 微机原理复习笔记二 微机原理复习笔记三 微机原理复习笔记四 微机复习笔记(一) 1. 二进制 ...

  7. 2021《微型计算机原理与接口技术》总复习

    第 1 部分 指令 1.1 数据传送 1.通用数据传送 MOV dest,src 传送指令,将src的内容赋值给destPUSH OPRD ; 压入栈指令,将oprd压入栈 16 位寄存器或者存储器字 ...

  8. 2接口详解_冯博琴微型计算机原理与接口技术第3版答案资料配套题库名校考研真题课后习题章节题库模拟试题...

    冯博琴<微型计算机原理与接口技术>(第3版)配套题库[名校考研真题+课后习题+章节题库+模拟试题] 第一部分 名校考研真题 第1章 微型计算机基础概论 第2章 微处理器与总线 第3章 80 ...

  9. 微型计算机原理与接口技术考试附录

    微型计算机原理与接口技术考试附录 知道该怎么复习了吧,o(∩_∩)o 哈哈! 老师平时不给附录我们看,不过我借着网课暂停的机会给它抄下来了. 附录 [8254控制字]系统机8254口地址 40H~43 ...

最新文章

  1. Python 机器学习库 Top 10,你值得拥有!
  2. GLPI开源资产管理系统
  3. linux重启memcache_memcache和memcached区别
  4. mysql数据库用户简单分析_如何用SQLyog来分析MySQL数据库详解
  5. 如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...
  6. GB-T 16260.1-2006 软件工程 产品质量 第1部分:质量模型
  7. dll编译为html,如何为MSHTML v9编译.dll。我目前正在获取“MIDL 2035:预期的常量表达式”的100个错误...
  8. 您操作系统的msxml组件版本过低_Fuchsia OS –未来的Google操作系统?
  9. java中ImageIcon路径问题
  10. Matlab取整函数
  11. 如何下载矢量电子地图(OpenStreetMap)
  12. Postgresql去掉某个字段多余的空格
  13. DP转HDMI方案|DP转HDMI自带SPI|AG6311设计电路|AG6311MDQ设计参考原理图
  14. 小米台灯突然自己亮了_除了彩屏和小爱,还有哪些升级?——小米手环4 NFC版...
  15. 如何维持手机电池寿命_手机电池寿命是多久? 如何延长手机电池寿命?
  16. 项目经理的岗位职责和要求
  17. Hadoop性能调优总结
  18. PTA 古风排版 (20 分)队列方法
  19. 百度Aistudio飞桨七日游体验python爬虫和分析数据
  20. 榆熙电商:如何确定审美经济的内在构成符号是什么?

热门文章

  1. Response的用法
  2. 集成Health Kit时因证书问题出现错误码50063的解决方案
  3. (新手版)GitHub安装和配置教程for Windows(肯定看得懂)
  4. JS 中对象的深浅拷贝(ES3、ES5、ES6不同方法底层实现,一文搞清楚深浅拷贝面试常问题)
  5. 【Unity编程】四元数(Quaternion)与欧拉角
  6. 【activiti】activiti入门
  7. Mock-Server搭建
  8. 赛联区块链教育:对区块链技术做个普及
  9. 第51篇 Qt 5.5全新的开始
  10. 概率论各种基础分布期望和方差推导过程汇总