汇编语言期末复习总结

汇编语言期末复习总结

第一章 汇编基础知识

本章目标:

  1. 理解汇编语言的特点和应用场合;
  2. 掌握计算机内部的数据表示,特别是补码的表示、特殊值的表示,以及不同编码的数据位数扩展方法;
  3. 熟悉补码的加减法运算规则,并能应用
  4. 熟悉常见ASCII码和BCD码
  5. 理解汇编语言中的数据类型

1.1 微型计算机

1、微型计算机系统包括硬件系统软件系统
硬件系统包括计算机和外设,软件系统分为系统软件和应用软件。
CPU(微处理器)包括运算器、控制器、内部总线、寄存器组。
应用:要会举外设的例子(键盘鼠标打印机等),同时要注意针对CPU的外设就是除了CPU以外的所有东西(包括内存什么的)
在这里插入图片描述

2、微型计算机主要性能指标

  • 主频:CPU基本时钟频率
  • 时钟周期:CPU工作的最小时间单位
  • 字长:CPU一次能处理的二进制信息的位数(8086是16位)

1.2 汇编语言及其特点

1、机器语言

  • CPU只能识别和执行机器指令,即二进制代码。
  • 不同的CPU有不同的指令系统。
  • 由于机器语言直接作用于硬件,所以执行效率很高,但编写、读取都很麻烦。

2、汇编语言

  • 汇编语言与机器语言一一对应
  • 汇编语言指令系统包括汇编指令、伪指令、宏指令

汇编程序和汇编语言源程序的区别?

汇编语言源程序是我们所写的代码,而汇编语言源程序其实相当于高级语言的编译器,在汇编中叫做汇编器,也叫汇编程序,是用来编译源程序的软件。

1.3 数据表示

1、负数补码

所有位都为1的时候是-1;真值为0的时候是该范围下的负数最小值。也就是跟整数是反着的(毕竟计算机不知道什么正负)

2、有符号数的位数扩展方法

  • 对于原码扩展,不管符号位,都补0
  • 对于补码扩展,符号位是0补0,是1补1

3、常用ASCII码(记)

30H —— 0
41H —— A
61H —— a
24H ——$
20H —— 空格
0AH —— 换行
0DH —— 回车

第二章 8086处理器

本章目标:

  1. 常用寄存器的功能
  2. 理解物理地址、段地址、偏移地址、逻辑地址的关系

2.1 常用寄存器

1、通用寄存器:

  • AX —— 累加器,常作隐含操作数
  • BX —— 基地址寄存器,常作地址指针
  • CX —— 计数器,常存放计数值
  • DX —— 数据寄存器,常与累加器配合
  • SI —— 源变址寄存器,保存源操作数地址
  • DI —— 目的变址寄存器,保存目的操作数地址
  • SP —— 栈顶指针,只指向栈顶
  • BP —— 堆栈指针,可保存堆栈任意位置地址

2、段寄存器

  • CS 代码段寄存器 —— 用来存放要执行的代码指令,IP指向下一条要执行的指令的偏移地址(CS:IP)
  • DS 数据段寄存器 —— 用来存放数据段首地址
  • ES 附加段寄存器 —— 也是存数据
  • SS 堆栈寄存器 —— 用来存放程序运行中需要被临时保护的数据

3、专用寄存器

  • IP 指令指针寄存器 —— 保存下一条指令地址
  • FLAG 标志寄存器 —— 仅用到9位

3.1 常用标志位

CF 进位标志位,有进借位为1
OF 溢出标志位,有溢出为1
SF 符号标志位,运算结果为负则为1
ZF 零标志位,运算结果为0则为1

2.2 物理地址

  • 物理地址是每个存储单元的唯一的编号
  • 地址总线20位,则可寻址主存空间为2^20 = 1MB
  • 机器字长16位,则可直接寻址空间为2^16 = 64KB

1、存储器的分段管理

  • 段的起始:每个段首地址必须是16的倍数
  • 段的容量:每个逻辑段最大容量可以达到64KB
  • 各个逻辑段之间可以重叠
  • 1MB空间最多分为2^20/16=64K个段
  • 1MB空间最少分为2^20/64K = 16个段
  • 逻辑地址——段地址:有效地址(EA)

2、数据的存取方法

基本原则:低地址单元存放低字节数据,高的存放高的。注意读取的时候数据时什么类型

3、分段管理下的访问存储器

段寄存器 —— 对应的指针寄存器
CS —— IP
DS —— BX,SI,DI
ES —— DI
SS —— SP,BP

第三章 8086指令系统

本章目标:

  1. 7种寻址方式
  2. 常用指令——格式、功能、结果、对标志位的影响

3.1 寻址方式

  1. 立即数寻址方式:就是源操作数是一个数字。优点 不需要访存,速度快;缺点 不可以修改,通用性差。目的操作书不可以是立即数
  2. 寄存器寻址方式:mov ax,bx这种。可以用通用寄存器和段寄存器,但不能用专用寄存器(IP\FLAG)。操作数在CPU中,也不需要访存。
    高级语言中的x=y,用汇编写需要mov ax,y ,mov x,ax
  3. 直接寻址方式:操作数为存储单元,比如mov ax,[100H]这种。默认段地址是DS。
    假设X为定义的符号地址,那么mov ax,X就跟mov ax,[X]一样了
  4. 寄存器间接寻址:一个操作数只有一个间址寄存器,如mov ax,[BX]
  5. 寄存器相对寻址:mov ax,[bx+100H];mov ax,[bx][100H];mov ax,100H[ax]表示的是一样的
  6. 基址变址寻址方式:基址寄存器BX\BP,变址寄存器SI\DI
  7. 相对基址加变址:三个相加

3.2 常用指令

数据传送类指令,不影响标志位的状态

  • mov dst,src。其中dst不能为立即数,立即数也不能为段寄存器赋值;两个操作数不能同时为段寄存器,也不能同时为地址;CS不能为目的操作数,IP不能为操作数
    注:两种操作数类型不确定时,需要强制类型。如mov[bx],1就是错误的

  • add adc

  • inc dec 自增自减,对cf无影响

  • sub sbb

  • cmp指令用dst减src,但对两个操作数都没有影响

  • mul 乘数。如果乘数是8位,则默认被乘数是al,结果放在ax中;如果乘数是16位,则默认被乘数是ax,结果放在dx:ax中

  • imul

  • neg求补。注意是全位置取反加一,跟补码不一样,用来求相反数的

  • div 除数。如果除数是8位,则被除数为ax16位,ah存余数,al存商;如果除数是16位,则被除数是dx:ax,ax存商dx存余数

第四章 编程

本章目标:

  • 记住代码程序标准格式
  • 会用伪指令
  • 会四个常用dos功能调用

4.1 程序格式

Data Segment
…………
Data ends
Code Segment
Assume ds:Data,cs:Code
Start:mov ax,Data
	   mov ds,ax
	   ……
	   mov ax,4c00h
	   int 21H
Code ends
end start

4.2 伪指令

伪指令并不会执行,只是提供汇编信息。

比如DW,DB,DD,SEGMENT,ASSUME等

  • 通配符:?。只分配存储空间,而不赋初值

  • 连续一段空间:DUP复制说明符。
    DATA1 DB 100 DUP(?)
    BUF DB 10,?,10 DUP (“$”)

  • 常量:用equ

  • 变量:A1 DB 10
    A2 DW NUM, 100H, -1(这样100h和-1各占一个字节)
    A3 DD 4*8 (32=20H放在内存中)

  • 字符串:用DB,存ASCII码

  • 等号=:只能定义数值,但可对一个符号名重复定义

  • org定位:ORG 100H,其后的数据从指定位置开始存放

4.3 DOS功能调用

使用方法:1、设置入口参数(AH)2、INT 21H调用相应模块 3、获得输出参数

  • 01号:单字符输入
    mov ah,01h
    int 21h
    输入后,al即为输入字符的ASCII码,注意有些输入多个值相加,要减掉30H
  • 02号:单字符输出
    mov ah,02h
    mov dl,db的字符
    int 21h
    即输出放在dl中的字符
  • 09号:字符串输出
    lea dx,db的字符串
    mov ah,09h
    int 21h
    注:字符串需要以$结束
  • 0A号:字符串输入
    lea dx,缓冲区buf
    mov ah,0ah
    int 21h
    注:由于回车也保存在缓冲区,所以如果定义10长度的话,只能输入9个字符。如果输入的字符串最后需要输出,可以初始化为$

例:输入字符串,并回车显示出来

DATA SEGMENT
	BUF DB 10, ? , 10 DUP("$")
DATA ENDS
CODE SEGMENT
	ASSUME DS:DATA, CS:CODE
START:
MOV AX,DATA
MOV DS,AX
;输入
LEA DX,BUF
MOV AH,0AH
INT 21H
;换行
MOV DL,0DH
MOV AH,02H
INT 21H
;因为buf的第一个字节放的是10
LEA DX,[BUF+2]
MOV AH,09H
INT 21H
;结束
MOV AX,4C00H
INT 21H
CODE ENDS
END START

第五章 汇编语言程序设计

本章目标:

  • 顺序、分支、循环结构
  • 内存单元的指定访问
  • 求最大最小值
  • 求数量
  • 求长度
  • 求和显示

5.1 一些常见的逻辑运算

  • and al,0fh
    清空高四位,和减30h一样,把输入的字符转成数字
  • xor cx,cx
    清空cx

5.2 常见的程序代码

  • 输入数字到X中
x db ?

mov ah,01h
int 21h
sub al,30h
mov x,al
  • 求x-y的绝对值
x db ?
y db ?
;若是有符号数
mov al,x
sbb al,y
jge exit
neg al
exit:

接口部分(8255和8253)

看我兄弟的博客吧:控制字
大概只考控制字

  • 30
    点赞
  • 385
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇编语言复习参考微机原理与汇

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值