《汇编语言程序设计》——钱晓捷 第1章 汇编语言基础知识 学习笔记

目录

一、汇编语言主要应用场合

二、数据表示

1.数制

2.数值的编码

3.字符的编码

三、8086微处理器

1.功能结构

2.8086寄存器

(1)通用寄存器 

(2)标志寄存器

(3)指令指针寄存器——IP

(4)段寄存器

3.8086的存储器组织

(1)数据的存储格式

(2)存储器的分段管理

(3)段寄存器的作用

四、8086的寻址方式

1.立即数寻址方式

2.寄存器寻址方式

3.存储器寻址方式

(1)直接寻址方式

(2)寄存器间接寻址方式

(3)寄存器相对寻址方式

(4)基址变址寻址方式

(5)相对基址变址寻址方式


一、汇编语言主要应用场合

(1)程序要有较快的执行时间

(2)程序与计算机硬件密切相关

(3)大型软件需要提高性能、优化处理的部分

(4)没有合适的高级语言或只能采用汇编语言时,如开发最新的处理器程序、暂时没有支持新指令的编译程序。

二、数据表示

1.数制

(1)分类

十六进制:H/h

二进制:B/b

十进制:D/d

(2)数制间转换

十进制整数转换为二进制数和十六进制数:
整除取余,逆序

十进制小数转换为二进制数和十六进制数:

乘以基数,取整数,顺序

2.数值的编码

(1)原码——最高有效位表示符号(正0负1),其它位直接表示数值大小

(2)反码——整数反码与源码相同,负数反码为源码取反

0有+0和-0,8位二进制原码和反码所能表示范围为-127-127

(3)补码——正数补码与源码相同,负数反码为源码取反加1

注:补码转为原码,也是取反加1

8位二进制补码表示范围为-128-127

补码好处:减法运算可以变换成加法运算,所以在计算机中,有符号数默认采用补码形式

3.字符的编码

(1)BCD——浪费但是直观

BCD用4位二进制编码表示10进制(与16进制一样,只不过少了10-15这几位)

例:0100表示4

1)压缩BCD       

1字节表示1位BCD码

2)非压缩BCD 

1字节表示2位BCD码

(2)ASCII

ASCII采用7位二进制编码,有128个

最高D7位通常作为0,通信时,D7位通常用作奇偶校验位

1)不可显示的控制字符

:前32个和最后一个编码

2)可显示和打印的字符

:从20H开始的95个编码,包括数码,英文字符,标点符号

注:处理器不区别两种字符,只有外部设备才区别对待。

(3)Unicode

使用16位编码,给每个字符提供了一个唯一的数字,不论平台、程序、语言

前256个字符对应ASCII字符,16位编码的高字节为0,低字节等于ASCII编码值

三、8086微处理器

1.功能结构

《汇编语言程序设计》——钱晓捷 第1章 汇编语言基础知识 学习笔记_第1张图片

 右边为总线接口单元(BIU),负责CPU对存储器和外设进行访问

左边为执行单元(EU),负责指令的译码、执行和数据的运算

完成一条指令的两个主要阶段:
(1)取指:从主存储器中取出指令代码进入CPU

(2)执行:将指令代码翻译成它代表的功能(译码),并发出有关控制信号实现这个功能。

2.8086寄存器

寄存器用于暂时存放程序执行过程中的代码和数据

分为:透明寄存器(实际存在但从某个角度看好像没有)和可编程寄存器

可编程寄存器可分为通用寄存器和专用寄存器。

《汇编语言程序设计》——钱晓捷 第1章 汇编语言基础知识 学习笔记_第2张图片

(1)通用寄存器 

《汇编语言程序设计》——钱晓捷 第1章 汇编语言基础知识 学习笔记_第3张图片

(2)标志寄存器

标志(Flag)用于反映指令执行结果或控制指令执行形式。

标志寄存器FLAGS,也被称为程序状态字寄存器PSW

各种标志分为两类:6个状态标志和3个控制标志

1)状态标志

加、减、逻辑运算指令是主要设置它们的指令

CF(进位标志)、PF(奇偶标志)、AF(调整标志)、ZF(零标志)、SF(符号标志)、OF(溢出标志)

2)控制标志

DF(方向标志)、IF(中断允许标志)、TF(陷阱标志)

(3)指令指针寄存器——IP

IP是专用寄存器,具有自动增量的能力,处理完一条指令,IP的值就加上该指令的字节数,从而指向下一条指令,实现程序的顺序执行

(4)段寄存器

一个段安排一类代码或数据

主要涉及:代码段,数据段,堆栈段

段寄存器有:CS、SS、DS、ES

3.8086的存储器组织

(1)数据的存储格式

基本单位:1bit,存储一个二进制数0或1

1字节:8个bit

1字:2字节,16个bit

1双字:2字,4字节,32个bit

最低位为最低有效位,最高位为最高有效位

地址边界对齐:对n字节的数据,起始于能够被n整除的存储器地址位置

(2)存储器的分段管理

8086CPU可以表达16位存储器地址,但是地址线是20位的,要将16位的转换成20位的:

物理地址/绝对地址=段地址*16+偏移地址

注:同一个物理地址可以有多个逻辑地址

例如 1460:0100h和1380:0F00h的物理地址均为14700h

(3)段寄存器的作用

CS:代码段寄存器,存放程序的指令序列

SS:堆栈段寄存器,存放堆栈的段地址

DS:数据段寄存器,存放当前运行程序所用的数据

ES:附加数据段,也用于数据的保存。另外,串操作指令将附加段作为其目的操作数的存放区域

《汇编语言程序设计》——钱晓捷 第1章 汇编语言基础知识 学习笔记_第4张图片

四、8086的寻址方式

1.立即数寻址方式

mov al,05h

2.寄存器寻址方式

mov ax,1234h
mov bx,ax

3.存储器寻址方式

(1)直接寻址方式

mov ax,[2000h]
mov ax,es:[2000h]

(2)寄存器间接寻址方式

mov ax,[si]

(3)寄存器相对寻址方式

mov ax,[di+06h]   ;bx,si,di寄存器默认是DS
mov ax,[bp+06h]   ;bp寄存器默认是SS

(4)基址变址寻址方式

mov ax,[bx+si]

(5)相对基址变址寻址方式

mov ax,[bx+si+06h]
mov ax,count[si]
mov ax,wnum[bx][si]

你可能感兴趣的:(汇编笔记——钱晓捷,学习,笔记)