汇编语言基本概念汇总
2017-05-08 17:06
411 查看
汇编语言应该是我们如今学的最“低级”的语言了,由于如今不会再有人去学机器语言了。
而汇编语言还在一些硬件或者嵌入式设备上使用并开发着。
下面资料是为了大学的汇编考试整理的资料,如今与大家分享,希望能给大家提供帮助。
汇编语言程序设计汇总
计算机主要由运算器、控制器、存储器和输入输出设备五大部件构成。
字长word是指微处理器内部一次能够并行处理二进制代码的位数。它与微处理器内部寄存器以及CPU内部数据总线宽度是一致的,字长越长,所表示的数据精度就越高。
内存是由若干个存储单元组成,每一个单元分配一个固定的地址而且存放一个字节的数据。
MIPS Millions of Instruction Per Second 每秒百万条指令
微机系统採用了多种系统总线标准。如ISA/EISA/VESA/PCI
系统总线分为数据总线、地址总线、控制总线。
Data Bus: DB
Address Bus: AB
讨论存储器容量时。以2的10次方即1024为基本单元。称为1K。1024K就是1M。
Control Bus : CB
CPU主频越高,其运算速度就越快。
字长代表了CPU对数据处理的能力和精度。
OS的主要部分是常驻监督程序Monitor,仅仅要一开机就存在于内存中,能够从用户接收命令,并使OS运行对应的动作。
汇编语言和机器语言一一相应。
汇编程序就是用来把由用户编制的汇编程序翻译成机器语言程序的一种系统程序。
高级语言的翻译程序有两种:
一种是先把高级语言程序翻译成机器语言,(或先翻译成汇编语言,然后又汇编程序再次翻译成机器语言)然后才干在机器上运行。——编译程序
直接把高级语言程序在机器上执行,一边解释一边执行。
——解释程序
翻译程序包含汇编程序、解释程序、编译程序。
ALU :算术逻辑运算单元:用来进行算术和逻辑运算及其对应操作。
8086 CPU内部结构按功能分为:
总线接口单元 BIU:Bus Interface Unit
运行单元 EU: Executive Unit
8086对存储器和IO设备的全部操作都是由BIU完毕的。
8086CPU的20位地址线可直接寻址1M存储器物理空间。但CPU内部寄存器均为16位的寄存器,16位寄存器怎样实现20位地址寻址呢?
CPU是将有关寄存器内容左移4位,然后由专门地址加法器,与16位偏移地址相加。形成20位的物理地址。以便找到存储单元。
指令指针 IP : Instruction Pointer
IP 用来存放下一条要运行指令在代码中的偏移地址。
IP的内容由BIU自己主动改动。使它总是指向下一条要取的指令在现行代码段中的偏移地址。
因为BIU和EU是各自独立并行工作的。在EU运行指令的同一时候,BIU可预取以下一条或几条指令。
Flags:反映CPU运算中的状态特征和存放某些控制标志。
通用寄存器组:
包含4个16位的数据寄存器:AX/BX/CX/DX
和4个16位指针与变址寄存器:SP/BP/SI/DI
8086CPU的外部数据总线和内部数据总线都是16位的,是真正的16位机。
寄存器能够分为程序可见寄存器和程序不可见寄存器。
程序可见寄存器是指在汇编语言程序设计中用到的寄存器。能够由指令来指定。
程序不可见寄存器指一般程序设计中不用而由系统所用的寄存器。
程序可见寄存器能够分为通用寄存器、专用寄存器和段寄存器。
AX/BX/CX/DX是数据寄存器。用来临时存放计算过程中用到的操作数,结果或其它信息。能够以字(16位),或字节(8位)形式訪问。都是通用寄存器。但又有各自专用的功能。
AX: Accumulator。做累加器用。是算术运算的主要寄存器。
BX: Base,做通用寄存器使。在计算存储器地址时,经常使用作基址寄存器。
CX:Count,作为通用寄存器使用。经常使用来保存计数值。如在移位指令、循环和串处理指令中作隐含的计数器。
DX:Data:可做通用寄存器使用,在做双字长运算时把DX和AX组合在一起存放一个双字长数。DX存放高位字。
SP/BP/SI/DI四个16位寄存器能够像数据寄存器一样在运算中存放操作数。但仅仅能以字(16位)为单位使用。
一般用在存储器寻址时,提供偏移地址。
SP:Stack Pointer:栈指针寄存器,用来指示栈顶的偏移地址。
BP:Base Pointer:基址指针寄存器。
SI:Source Index:源变址寄存器
DI: Destination Index:目的变址寄存器
CS:段寄存器
IP:Instruction Pointer 是指令指针寄存器。用来存放代码段中的偏移地址。
在程序执行中,始终指向下一条指令的首地址。与CS连用确定下一条指令的物理地址。
Flags是标志寄存器,又称程序状态字寄存器PSW Program Status Word
条件码标志记录程序中执行结果的状态信息,是依据有关指令的执行结果由CPU自己主动设置的。这些状态信息作为兴许条件转移指令的转移控制条件。所以称为条件码。
OF: Overflow Flag 溢出标志
SF: Sign Flag 符号标志
ZF: Zero flag 零标志
CF: Carry Flag 进位标志
AF: Auxiliary Carry Flag 辅助进位标志
PF: Parity Flag 奇偶标志
DF :Direction Flag 方向标志
IF: Interrupt Flag 中断标志
段寄存器也是一种专用寄存器。专用于存储器寻址,用来直接或间接存放段地址。
CS: Code Segment 代码段寄存器
DS: Data Segment 数据段寄存器
SS: Stack Segment 堆栈段寄存器
ES: Extra Segment 附加段寄存器
一个存储单元中存放的信息称为该存储单元的内容。
在存储单元里以字节为单位存储信息。
假设机器字长为8位时,则地址为0004H单元中存放的信息为78H。也就是说,该单元的内容为78H。(0004H)=78H
一个字存入存储器要占有连续的两个字节单元。存放时低位字节存入低地址,高位字节存入高地址。这样两个字节单元就构成了一个字单元。
字单元的地址用它的低地址表示。
(0004H)=5678H
双字单元的存放方式与字单元类似,他被存放在相继的4个字节中,低位字存入低地址区,高位字存入高地址区。
双字单元的地址有其最低字节的地址指定。
(0004H)=12345678H。
1字=2字节
同一个地址既能够作为字节单元的地址,又可看做字单元,双字单元或四字单元的地址。
假设用X表示某存储单元的地址,则X单元的内容能够表示为(X);假如X单元中存放着Y,而Y又是一个地址,则可用(Y)=((X))表示Y单元的内容。
eg:(0004H)=5678H,5678H又是一个存储单元地址。(5678H)=2F1EH。2F1EH才是真正的内容。
即((0004H))=2F1EH。
在1M的存储器里,每个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。
段地址是指每一段的起始地址(又称段基地址),因为他必须是段的首地址,所以低四位一定是0。能够规定段地址仅仅取段起始地址的高16位值。
偏移地址指在段内相对于段起始地址的偏移值。
把段地址左移四位再加上偏移地址就形成物理地址。
物理地址=段地址*16D+偏移地址
等价于
物理地址=段地址*10H+偏移地址
专门存放段地址的寄存器。称为段寄存器。
CS:代码段
DS:数据段
SS:堆栈段
ES:附加段
每一个段寄存器能够确定一个段的起始地址。
MOV AX,ES:[BX]
ES作段寄存器,BX作间接寄存器寻址的单元送入AX寄存器。
MOV BX,ES:[SI]
ES作段寄存器,SI作间址寄存器的寻址单元内容送入BX寄存器。
MOV EAX,DS:[BP]
DS作段寄存器,BP作间址寄存器寻址的单元内容送入EAX寄存器。
一个计算机的指令集合。就是该计算机的指令系统。
每条指令有两部分组成,操作码字段和地址码字段。
操作码字段:说明该指令所要完毕的操作,即该条指令的性质。
地址码字段:描写叙述该指令的操作对象。
一般地址码字段通常是直接给出操作数;或者给出操作数存放的寄存器编号;或者给出操作数存放的存储单元的地址或有关的地址的信息。
依据地址码字段所给出的地址的个数,指令格式可分为零地址、一地址、二地址、三地址、多地址指令。
指令中用于确定操作数存放地址的方法,称为寻址方式。
假设地址码字段直接给出了操作数。这样的寻址方式是马上寻址。
假设地址码字段指出了操作数所在的寄存器编号,叫寄存器寻址。
假设操作数存放在存储器中。则地址码字段通过各种方式给出了存储器地址。叫存储器寻址。
寻找和获得操作数或操作数存放地址或指令转移地址的方法称为寻址方式。
操作数及操作结果存放的地址有三处:存放在指令的地址码字段中。存放在寄存器中;存放在存储器的数据段(DS)、堆栈段(SS)或附加数据段(ES)中。
其相应有三种操作数:马上操作数、寄存器操作数、存储器操作数
要寻找这些操作数就有三种基本寻址方式:马上寻址方式、寄存器寻址方式、存储器寻址方式。
马上寻址方式寻找的操作数紧跟在指令操作码之后。
格式:操作码 数字表达式
MOV AX,267
MOV AL,10010011B AND 0FEH
MOV AL,PORT1
MOV AX,DATA1
“267”是数字。“10010011B AND 0FEH”是数字表达式,PORT1是一个符号名。属于常数。DATA1是定义的段名。就是段地址,属于常数。
汇编马上寻址方式时,汇编程序首先计算数字表达式的值,然后写入指令的地址码字段,称为马上数。
寄存器寻址是指要寻找的操作数在某个寄存器中。
格式:操作码 寄存器名
MOV AX,BX
MOV AL,BL
汇编程序将寄存器的地址编号写入指令的地址码字段,当机器运行含有这样的寻址方式的指令时,依据地址码字段的编号訪问到寄存器。继而訪问到操作数。
存储器寻址方式:当操作数放在存储器中的某个单元时,CPU要訪问存储器才干获得该操作数。假设存储器的存储单元是20位,通过各种方法算出段内偏移地址(有效地址)。结合段地址形成20位物理地址,找到操作数,称为存储器寻址。
直接寻址方式是指要寻找的操作数的地址在指令中直接给出。
格式:
操作码 地址表达式
操作码 [地址表达式]
操作码 [数字表达式]
如:如果TABLE是在数据段定义的一个字节数组的首地址标号,偏移地址为1000H
MOV AL,TABLE
MOV AL,MOV AL,[1000H]MOV AL,ES:1000H= MOV AL,[1000H]MOV AL,ES:1000H
而汇编语言还在一些硬件或者嵌入式设备上使用并开发着。
下面资料是为了大学的汇编考试整理的资料,如今与大家分享,希望能给大家提供帮助。
汇编语言程序设计汇总
计算机主要由运算器、控制器、存储器和输入输出设备五大部件构成。
字长word是指微处理器内部一次能够并行处理二进制代码的位数。它与微处理器内部寄存器以及CPU内部数据总线宽度是一致的,字长越长,所表示的数据精度就越高。
内存是由若干个存储单元组成,每一个单元分配一个固定的地址而且存放一个字节的数据。
MIPS Millions of Instruction Per Second 每秒百万条指令
微机系统採用了多种系统总线标准。如ISA/EISA/VESA/PCI
系统总线分为数据总线、地址总线、控制总线。
Data Bus: DB
Address Bus: AB
讨论存储器容量时。以2的10次方即1024为基本单元。称为1K。1024K就是1M。
Control Bus : CB
CPU主频越高,其运算速度就越快。
字长代表了CPU对数据处理的能力和精度。
OS的主要部分是常驻监督程序Monitor,仅仅要一开机就存在于内存中,能够从用户接收命令,并使OS运行对应的动作。
汇编语言和机器语言一一相应。
汇编程序就是用来把由用户编制的汇编程序翻译成机器语言程序的一种系统程序。
高级语言的翻译程序有两种:
一种是先把高级语言程序翻译成机器语言,(或先翻译成汇编语言,然后又汇编程序再次翻译成机器语言)然后才干在机器上运行。——编译程序
直接把高级语言程序在机器上执行,一边解释一边执行。
——解释程序
翻译程序包含汇编程序、解释程序、编译程序。
ALU :算术逻辑运算单元:用来进行算术和逻辑运算及其对应操作。
8086 CPU内部结构按功能分为:
总线接口单元 BIU:Bus Interface Unit
运行单元 EU: Executive Unit
8086对存储器和IO设备的全部操作都是由BIU完毕的。
8086CPU的20位地址线可直接寻址1M存储器物理空间。但CPU内部寄存器均为16位的寄存器,16位寄存器怎样实现20位地址寻址呢?
CPU是将有关寄存器内容左移4位,然后由专门地址加法器,与16位偏移地址相加。形成20位的物理地址。以便找到存储单元。
指令指针 IP : Instruction Pointer
IP 用来存放下一条要运行指令在代码中的偏移地址。
IP的内容由BIU自己主动改动。使它总是指向下一条要取的指令在现行代码段中的偏移地址。
因为BIU和EU是各自独立并行工作的。在EU运行指令的同一时候,BIU可预取以下一条或几条指令。
Flags:反映CPU运算中的状态特征和存放某些控制标志。
通用寄存器组:
包含4个16位的数据寄存器:AX/BX/CX/DX
和4个16位指针与变址寄存器:SP/BP/SI/DI
8086CPU的外部数据总线和内部数据总线都是16位的,是真正的16位机。
寄存器能够分为程序可见寄存器和程序不可见寄存器。
程序可见寄存器是指在汇编语言程序设计中用到的寄存器。能够由指令来指定。
程序不可见寄存器指一般程序设计中不用而由系统所用的寄存器。
程序可见寄存器能够分为通用寄存器、专用寄存器和段寄存器。
AX/BX/CX/DX是数据寄存器。用来临时存放计算过程中用到的操作数,结果或其它信息。能够以字(16位),或字节(8位)形式訪问。都是通用寄存器。但又有各自专用的功能。
AX: Accumulator。做累加器用。是算术运算的主要寄存器。
BX: Base,做通用寄存器使。在计算存储器地址时,经常使用作基址寄存器。
CX:Count,作为通用寄存器使用。经常使用来保存计数值。如在移位指令、循环和串处理指令中作隐含的计数器。
DX:Data:可做通用寄存器使用,在做双字长运算时把DX和AX组合在一起存放一个双字长数。DX存放高位字。
SP/BP/SI/DI四个16位寄存器能够像数据寄存器一样在运算中存放操作数。但仅仅能以字(16位)为单位使用。
一般用在存储器寻址时,提供偏移地址。
SP:Stack Pointer:栈指针寄存器,用来指示栈顶的偏移地址。
BP:Base Pointer:基址指针寄存器。
SI:Source Index:源变址寄存器
DI: Destination Index:目的变址寄存器
CS:段寄存器
IP:Instruction Pointer 是指令指针寄存器。用来存放代码段中的偏移地址。
在程序执行中,始终指向下一条指令的首地址。与CS连用确定下一条指令的物理地址。
Flags是标志寄存器,又称程序状态字寄存器PSW Program Status Word
条件码标志记录程序中执行结果的状态信息,是依据有关指令的执行结果由CPU自己主动设置的。这些状态信息作为兴许条件转移指令的转移控制条件。所以称为条件码。
OF: Overflow Flag 溢出标志
SF: Sign Flag 符号标志
ZF: Zero flag 零标志
CF: Carry Flag 进位标志
AF: Auxiliary Carry Flag 辅助进位标志
PF: Parity Flag 奇偶标志
DF :Direction Flag 方向标志
IF: Interrupt Flag 中断标志
段寄存器也是一种专用寄存器。专用于存储器寻址,用来直接或间接存放段地址。
CS: Code Segment 代码段寄存器
DS: Data Segment 数据段寄存器
SS: Stack Segment 堆栈段寄存器
ES: Extra Segment 附加段寄存器
一个存储单元中存放的信息称为该存储单元的内容。
在存储单元里以字节为单位存储信息。
假设机器字长为8位时,则地址为0004H单元中存放的信息为78H。也就是说,该单元的内容为78H。(0004H)=78H
一个字存入存储器要占有连续的两个字节单元。存放时低位字节存入低地址,高位字节存入高地址。这样两个字节单元就构成了一个字单元。
字单元的地址用它的低地址表示。
(0004H)=5678H
双字单元的存放方式与字单元类似,他被存放在相继的4个字节中,低位字存入低地址区,高位字存入高地址区。
双字单元的地址有其最低字节的地址指定。
(0004H)=12345678H。
1字=2字节
同一个地址既能够作为字节单元的地址,又可看做字单元,双字单元或四字单元的地址。
假设用X表示某存储单元的地址,则X单元的内容能够表示为(X);假如X单元中存放着Y,而Y又是一个地址,则可用(Y)=((X))表示Y单元的内容。
eg:(0004H)=5678H,5678H又是一个存储单元地址。(5678H)=2F1EH。2F1EH才是真正的内容。
即((0004H))=2F1EH。
在1M的存储器里,每个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。
段地址是指每一段的起始地址(又称段基地址),因为他必须是段的首地址,所以低四位一定是0。能够规定段地址仅仅取段起始地址的高16位值。
偏移地址指在段内相对于段起始地址的偏移值。
把段地址左移四位再加上偏移地址就形成物理地址。
物理地址=段地址*16D+偏移地址
等价于
物理地址=段地址*10H+偏移地址
专门存放段地址的寄存器。称为段寄存器。
CS:代码段
DS:数据段
SS:堆栈段
ES:附加段
每一个段寄存器能够确定一个段的起始地址。
MOV AX,ES:[BX]
ES作段寄存器,BX作间接寄存器寻址的单元送入AX寄存器。
MOV BX,ES:[SI]
ES作段寄存器,SI作间址寄存器的寻址单元内容送入BX寄存器。
MOV EAX,DS:[BP]
DS作段寄存器,BP作间址寄存器寻址的单元内容送入EAX寄存器。
一个计算机的指令集合。就是该计算机的指令系统。
每条指令有两部分组成,操作码字段和地址码字段。
操作码字段:说明该指令所要完毕的操作,即该条指令的性质。
地址码字段:描写叙述该指令的操作对象。
一般地址码字段通常是直接给出操作数;或者给出操作数存放的寄存器编号;或者给出操作数存放的存储单元的地址或有关的地址的信息。
依据地址码字段所给出的地址的个数,指令格式可分为零地址、一地址、二地址、三地址、多地址指令。
指令中用于确定操作数存放地址的方法,称为寻址方式。
假设地址码字段直接给出了操作数。这样的寻址方式是马上寻址。
假设地址码字段指出了操作数所在的寄存器编号,叫寄存器寻址。
假设操作数存放在存储器中。则地址码字段通过各种方式给出了存储器地址。叫存储器寻址。
寻找和获得操作数或操作数存放地址或指令转移地址的方法称为寻址方式。
操作数及操作结果存放的地址有三处:存放在指令的地址码字段中。存放在寄存器中;存放在存储器的数据段(DS)、堆栈段(SS)或附加数据段(ES)中。
其相应有三种操作数:马上操作数、寄存器操作数、存储器操作数
要寻找这些操作数就有三种基本寻址方式:马上寻址方式、寄存器寻址方式、存储器寻址方式。
马上寻址方式寻找的操作数紧跟在指令操作码之后。
格式:操作码 数字表达式
MOV AX,267
MOV AL,10010011B AND 0FEH
MOV AL,PORT1
MOV AX,DATA1
“267”是数字。“10010011B AND 0FEH”是数字表达式,PORT1是一个符号名。属于常数。DATA1是定义的段名。就是段地址,属于常数。
汇编马上寻址方式时,汇编程序首先计算数字表达式的值,然后写入指令的地址码字段,称为马上数。
寄存器寻址是指要寻找的操作数在某个寄存器中。
格式:操作码 寄存器名
MOV AX,BX
MOV AL,BL
汇编程序将寄存器的地址编号写入指令的地址码字段,当机器运行含有这样的寻址方式的指令时,依据地址码字段的编号訪问到寄存器。继而訪问到操作数。
存储器寻址方式:当操作数放在存储器中的某个单元时,CPU要訪问存储器才干获得该操作数。假设存储器的存储单元是20位,通过各种方法算出段内偏移地址(有效地址)。结合段地址形成20位物理地址,找到操作数,称为存储器寻址。
直接寻址方式是指要寻找的操作数的地址在指令中直接给出。
格式:
操作码 地址表达式
操作码 [地址表达式]
操作码 [数字表达式]
如:如果TABLE是在数据段定义的一个字节数组的首地址标号,偏移地址为1000H
MOV AL,TABLE
MOV AL,