汇编语言程序设计学习笔记01

第一章 汇编语言基础知识

1.1 寄存器

寄存器是CPU内部高速储存单元,它们提供数据和地址。

16位Intel 8086/80826 CPU中的寄存器为:

AX BX CX DX

SI DI BP SP

 

存储器地址

存储器地址是存储器中存储单元的编号

每个存储单元存放一个字节量的数据 一个字节B(Byte)=8个二进制位b(bit)

采用十六进制数来表达地址 Intel 8086具有1兆字节(1MB)存储器容量

存储器地址表示为:00000H ~ FFFFFH 其中大写H(或小写h)表示是十六进制数

 

端口

IO端口是接口电路中寄存器的编号

采用十六进制数来表达端口

Intel 8086支持64K个8位端口

I/O地址可以表示为:0000H ~ FFFFH

 

1.2 数据表示

(进制转换部分略)

BCD码

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

 

真值:现实中真实的数值

机器数:计算机中用0和1数码组合表达的数值

无符号数:只表达0和正整数的定点整数

有符号数:表达负整数、0和正整数的定点整数 符号位需要占用一个位 常用机器数的最高位 0表示正数、1表示负数

定点数:固定小数点的位置表达数值的机器数

定点整数:将小数点固定在机器数的最右侧表达的整数

定点小数:将小数点固定在机器数的最左侧表达的小数

浮点数:小数点浮动表达的实数

 

补码

有符号整数在计算机中默认采用补码

最高位表示符号:正数用0,负数用1

正数补码:直接表示数值大小(同无符号数)

负数补码:将对应正数补码取反加1     

[105]补码=01101001B     

[-105]补码=[01101001B]取反+1     =10010110B+1=10010111B

8位二进制补码表示的数值范围:-128~+127

16位二进制补码表示的数值范围:-2^15~+2^15-1

32位二进制补码表示的数值范围:-2^31~+2^31-1

 

负数真值“取反加1”得机器数补码

负数补码“取反加1”得到负数真值

补码:11100000B 真值:-([11100000]求反+1)=-(00011111+1)         =-00100000=-2^5=-32

 

 

1.3 主存空间的分配

汇编语言程序设计学习笔记01_第1张图片

 

总线接口单元BIU:负责读取指令和操作数  

执行单元EU :负责指令译码和执行

 

汇编语言程序设计学习笔记01_第2张图片

 

8086寄存器

汇编语言程序设计学习笔记01_第3张图片

 

8086微处理器

总线接口单元BIU:负责读取指令和操作数  

执行单元EU :负责指令译码和执行

数据寄存器

AX——累加器,算术逻辑运算。

BX——基址寄存器,存放储存器地址。

CX——计数器,循环等。

DX——数据寄存器,常用来储存双字数据的高16位。

变址寄存器用于存储器寻址提供地址

SI——源变址寄存器
DI——目的变址寄存器

指针寄存器用于寻址内存堆栈的数据

SP——堆栈指针寄存器,指示栈顶

BP——基址指针寄存器,指示栈底

 

标志寄存器

 

指令指针IP

指示代码段中指令的偏移地址,与代码寄存器CS常用,通过CS:IP寄存器控制指令序列。

段寄存器

CS:代码段起始地址

SS:堆栈段起始地址

DS:数据段

ES:附加段

 

计算机中信息的单位

二进制位bit:一位二进制数0/1

字节byte:8个二进制位D7-D0

字word:16位,2个字节,D15-D0

双字Dword:32位,4个字节,D31-D0

 

一个存储单元除了具备唯一的物理地址外还有多个逻辑地址。

物理地址:00000H~FFFFFH

汇编语言程序设计学习笔记01_第4张图片

 

处理器利用CS:IP取得下一条要执行的指令

利用SS:SP操作堆栈顶的数据

数据段:DS:EA

 

逻辑段的分配:

指令序列:代码段

堆栈:堆栈段

数据默认在数据段,也有在附加段,串操作的目的区必须在附加段

没有指明时,一般的数据访问在DS段;使用BP访问主存,则在SS段

CS:    ;代码段超越,使用代码段的数据

SS:     ;堆栈段超越,使用堆栈段的数据

DS:     ;数据段超越,使用数据段的数据

ES:     ;附加段超越,使用附加段的数据

 

立即数寻址(imm)

imm——8/16位 00~FF/0000~FFFF

寄存器寻址

MOV BX,AX

存储器选址

直接寻址

MOV AX,[2000H]

AX<-DS:2000H

间接寻址

MOV AX,[SI]

AX<-DS:[SI]

相对寻址

有效地址=BX/BP/SI/DI+8/16位位移量

MOV AX,[DI+06H]       ;AX←DS:[DI+06H]

MOV AX,[BP+06H]     ;AX←SS:[BP+06H]

基址变址寻址

有效地址=BX/BP+SI/DI

BP默认是SS

相对基址变址寻址

有效地址=BX/BP+SI/DI+8/16

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(汇编语言,汇编语言,学习笔记,机器语言)