汇编语言程序设计 知识点 V3.0
汇编语言考点总结

汇编语言考点总结汇编语言是一种低级的计算机编程语言,它直接操作计算机的底层硬件。
在计算机科学与技术领域,学习和掌握汇编语言是非常重要的一项技能。
本文将对汇编语言的主要考点进行总结,以帮助读者更好地理解和应用这门编程语言。
一、汇编语言的基本概念1. 背景介绍:汇编语言的产生和发展历程。
2. 指令集体系结构:指令的组成、执行过程和影响因素。
二、寄存器与寻址方式1. 通用寄存器:AX、BX、CX、DX等的功能和应用。
2. 段寄存器:CS、DS、ES、SS寄存器的作用和运用。
3. 寻址方式:立即寻址、直接寻址、间接寻址、寄存器寻址等的特点和使用场景。
三、汇编指令的基本操作1. 数据传输指令:MOV、XCHG、PUSH、POP等指令的使用方法和注意事项。
2. 算术运算指令:ADD、SUB、MUL、DIV等指令的功能和运算规则。
3. 逻辑运算指令:AND、OR、NOT、XOR等指令的逻辑操作和应用实例。
四、程序控制指令1. 无条件转移指令:JMP、CALL、RET等指令的作用和使用场景。
2. 条件转移指令:JZ、JC、JG等指令的条件判断和跳转控制。
3. 循环指令:LOOP、LOOPZ、LOOPNZ等循环控制指令的循环次数和条件判断。
五、中断与异常处理1. 中断的概念和分类:硬件中断和软件中断的区别与应用。
2. 中断处理程序:中断向量表、中断服务例程和中断处理过程的执行顺序。
3. 异常处理:异常的触发原因和异常处理的基本流程。
六、汇编语言编程实例1. 简单的计算器程序:实现两个数的加、减、乘、除运算。
2. 字符串处理程序:实现字符串的输入、输出、查找和替换等功能。
3. 汇编子程序的编写:封装通用功能的子程序,提高代码的重用性。
七、常见的汇编语言工具和资源1. 汇编语言开发环境:MASM、TASM、NASM等汇编器的介绍和使用方法。
2. 相关书籍和教程:推荐几本经典的汇编语言教材和在线资源。
结语:汇编语言虽然在现代计算机编程中使用较少,但它仍然在一些特定场景下发挥着重要的作用。
汇编语言知识大全

汇编语言知识大全汇编语言是计算机科学领域的重要组成部分,它是一种低级语言,用于在计算机硬件上进行编程。
了解和掌握汇编语言对于想要深入了解计算机体系结构和进行底层编程的人来说是非常重要的。
本文将为您提供一份汇编语言知识大全,涵盖汇编语言的基础知识、指令集、程序开发和调试技巧等方面。
一、汇编语言的基础知识1. 什么是汇编语言?汇编语言是一种机器语言的符号表示方法,通过使用助记符(mnemonic)代表特定的二进制指令,使得程序员可以更容易地编写和理解机器代码。
2. 汇编语言和高级语言的区别是什么?汇编语言主要是面向机器的,使用指令来直接控制硬件的操作,而高级语言更加抽象,使用更接近自然语言的语法结构,通过编译器或解释器将其翻译为机器码。
3. 为什么需要学习汇编语言?学习汇编语言可以让我们更好地理解计算机的底层工作原理,能够更加高效地编写程序,优化性能,并且在某些特定的应用中,汇编语言可以实现一些高级语言所不能达到的功能。
二、汇编语言的指令集1. 汇编语言的指令格式汇编语言的指令一般包含操作码(Opcode)、操作数(Operand)和注释三个部分,其中操作码表示要执行的操作,操作数表示要操作的数据,而注释则是对指令的解释说明。
2. 汇编语言的常用指令在汇编语言中,常用指令包括数据传输指令、算术和逻辑指令、控制指令等等。
比如MOV指令用于数据传输,ADD指令用于加法操作,JMP指令用于无条件跳转等。
3. 汇编语言的寻址方式寻址方式是指汇编语言中用于定位操作数的方法,常见的寻址方式有直接寻址、间接寻址、寄存器寻址等。
不同的寻址方式适用于不同的操作场景。
三、汇编语言的程序开发1. 程序结构汇编语言的程序通常由代码段、数据段和堆栈段组成。
代码段用于存放程序的指令,数据段用于存放程序的数据,而堆栈段则用于存放程序的运行时信息。
2. 程序调用在汇编语言中,程序之间的调用可以通过CALL和RET指令来实现。
CALL用于调用子程序,将当前代码的执行流程转移到被调用的子程序中,而RET则用于返回调用点。
汇编语言程序设计

汇编语言程序设计汇编语言是一种底层的计算机语言,它直接与计算机硬件交互,具有灵活性和高效性的特点。
在计算机科学领域,汇编语言程序设计是一门重要的学科。
本文将分析汇编语言程序设计的基本原理和应用,介绍其在实际项目中的应用以及相关的开发工具。
一、汇编语言程序设计的基本原理汇编语言是一种符号化的机器语言,通过使用助记符和标号来描述指令和数据。
它与计算机硬件非常接近,可以直接操作寄存器、内存和其他硬件资源。
汇编语言程序设计的基本原理包括指令的组成、寄存器的使用、内存的管理和流程控制等方面。
1.1 指令的组成汇编语言的指令由操作码和操作数组成。
操作码是指令的功能代码,用于定义指令要执行的操作。
操作数是指令的操作对象,可以是寄存器、内存地址或立即数等。
汇编语言提供了丰富的指令集,包括算术运算、逻辑运算、数据传输、控制转移等多种类型的指令。
1.2 寄存器的使用寄存器是计算机内部用于存储临时数据的高速存储器。
汇编语言通过寄存器来进行数据的传输和运算。
不同的计算机体系结构提供了不同数量和类型的寄存器。
常见的寄存器包括通用寄存器、指令指针寄存器和程序状态寄存器等。
1.3 内存的管理内存是计算机用于存储程序和数据的主要设备。
汇编语言可以通过直接指定内存地址来读取和写入数据。
内存管理的主要任务包括地址转换、数据的加载和存储、内存保护等。
汇编语言通过使用段寄存器和偏移地址的方式来管理内存。
1.4 流程控制汇编语言支持多种流程控制指令,包括条件跳转、无条件跳转、循环和子程序调用等。
通过这些指令,程序可以根据运行结果来选择不同的执行路径,实现复杂的逻辑功能。
流程控制是程序设计中的重要部分,对于优化程序性能和实现复杂算法非常关键。
二、汇编语言程序设计的应用汇编语言程序设计广泛应用于系统级编程、设备驱动、数字信号处理等领域。
以下是汇编语言程序设计在实际项目中的常见应用。
2.1 操作系统开发操作系统是计算机硬件与用户之间的接口,负责管理硬件资源和为应用程序提供服务。
汇编语言程序设计——知识点-v3.0

第一章1、什么是汇编语言?2、汇编语言程序设计过程:编辑源程序,编译(汇编),连接,运行调试3、汇编语言特点?与机器语言一一对应,直接操作硬件,高效率(空间和时间,运行速度快,目标代码短,占用存储空间少)4、数制转换第2章8086计算机组织结构1、计算机硬件系统组成:CPU、存储器、输入输出设备。
2、CPU组成:运算器、控制器、寄存器,运算器和控制器由芯片设计时设计好,不可做任何改动,程序设计员仅能在程序里使用寄存器,寄存器都有相应的名字,如AX,能在程序里直接使用寄存器是汇编语言区别于高级语言的最重要特点,这样就可以直接控制硬件系统。
3、总线结构:数据总线、地址总线、控制总线。
数据总线分8位、16位、32位和64位等,多少位机就是以数据总线来划分,比如8位机、32位机。
8086机是16位机,但地址总线是20位,地址总线数量决定了内存寻址空间的大小,如8086有20位地址线,那么寻址空间是:220=210*1K=1M,8086最大寻址空间为1MB,即地址范围:00000H~FFFFFH。
控制总线主要传送控制信息,如读写操作,读写操作的主体是CPU,读操作是指CPU从内存或外设读取数据,写操作是指CPU把数据写到内存或外设中。
4、存储器:存储器的最小单元是字节(Byte,由8个位组成),字节的多少就是存储器的容量。
每一个字节单元都有一个唯一的编号,这个编号就是字节单元的地址,此地址就是物理地址,对于8086而言,编号的形式为:XXXXXH,如85421H。
如果要读写存储器,必须知道某一个字节单元的地址。
多个字节单元可以组合成更大的单元(数),比如2个字节单元组合成一个字(Word),4个字节单元组合成一个双字(Double Word)等,规定:这个组合后的大单元是以最小字节单元地址为自己的地址。
如85421H字节单元内容为12H,85422H 字节单元内容为34H,那么以85421H地址的字单元的内容就是3412H。
《汇编语言程序设计》复习资料

《汇编语言程序设计》复习资料一、基本概念1、8088/8086CPU内部寄存器有__14____个,其中的AX、BX、CX、DX是通用寄存器,SP、BP、DI、SI 是基址和变址寄存器,CS、DS、ES、SS、是段寄存器,此外还有指令指针寄存器 IP 和标志位寄存器 FLAGS 两个控制寄存器,所有寄存器都是 16 _位寄存器,每个寄存器可以存放 16 位二进制数。
2、8088/8086CPU的标志位寄存器中有9个标志位,其中的DF、IF、TF是控制标志,OF、SF、ZF、CF、AF、PF 是状态标志。
3、8088/8086CPU有三组总线,它们是数据总线、控制总线和地址总线;地址总线是 20 条,因此它可以寻址的范围是 1M 字节。
通常将 1024 字节称为1K,将 1024K 字节称为1M。
4、8088/8086CPU的存储器采用分段方式管理,每个段最多可以有 64K 字节,全部存储空间可以分成 16 个大小为64K且互相不重叠的段。
5、采用分段方式管理的存储单元的地址分成物理地址和逻辑地址两种,逻辑地址由段地址和偏移地址两部分构成,段地址是每个存储器段的起始地址;偏移地址则是相对于每个段第一个存储单元的偏移值。
段地址存放在段寄存器中,由于8088/8086CPU的段寄存器是16位寄存器,因此在段寄存器中存放的是段地址的 16 位;而CPU对数据的存取是按物理地址进行的,物理地址和逻辑地址间的关系是__ 物理地址=段地址 16D(或10H)+ 偏移地址___。
6、存储器中,数据是以字节为单位存放的,它是一个 8位二进制数,16位二进制数是 2个字节,又称为字;每个存储单元可以存放一个字节;一个字则占用两个存储单元,存放时要将低字节放在地址较小的存储单元中。
7、计算机的指令由操作码字段和操作数字段构成,它们分别给出计算机所要执行的操作和执行操作所要的操作数。
8、指令操作数通常可以存放在指令中,也可以存放在CPU的寄存器中,大多数存放在存储器中,它们分别称为立即数、寄存器操作数和存储器操作数。
汇编语言程序设计复习

知识点第一章基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。
十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。
8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。
第二章80x86计算机组织(1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。
(2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。
存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。
eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。
已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。
如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H .第三章80x86的指令系统和寻址方式与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。
数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。
汇编语言程序设计知识

划分模块的原则
每个模块应具有独立的功能,能产生一个明确的结果,即单模块的功能高内聚性。 模块之间的控制耦合应尽量简单,数据耦合应尽量少,即模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。 模块长度适中。20条~100条的范围较合适。
操作数
注释部分不是汇编语言的功能部分,只是用来增加程序的可读性。 良好的注释是汇编语言程序编写中的重要组成部分。
注释
模块化的程序设计方法 优点和模块划分的原则 编程技巧
4.1.2 编程的方法和技巧
一、模块化的程序设计方法
1、程序功能模块化的优点
单个模块结构的程序功能单一,易于编写、调试和修改。 便于分工,从而可使多个程序员同时进行程序的编写和调试工作,加快软件研制进度。 程序可读性好,便于功能扩充和版本升级。 对程序的修改可局部进行,其它部分可以保持不变。 对于使用频繁的子程序可以建立子程序库,便于多个模块调用。
二、分支程序
散转指令 转向n-1分支 转向n分支 K=n-1 ┅
转向0分支
K=0
转向1分支
K=1
图4-1 分支程序结构
┅
┅
K=n
01
02
03
04
128个子程序首址
JMP_128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP @A+DPTR JMPTAB:AJMP ROUT00 AJMP ROUT01 ┇ ┇ AJMP ROUT7F
二、机器汇编
机器汇编是在计算机上使用交叉汇编程序进行源程序的汇编。汇编工作由机器自动完成,最后得到以机器码表示的目标程序。
将二进制机器语言程序翻译成汇编语言程序的过程称反汇编。 汇编和反汇编的过程如图4-3所示。
汇编语言程序设计知识

汇编语言程序设计知识汇编语言是一种低级语言,用于向计算机提供指令和数据。
掌握汇编语言程序设计知识,对于深入理解计算机体系结构和系统底层原理非常重要。
本文将为你介绍汇编语言程序设计的基本知识,并探讨其在实际应用中的应用。
一、汇编语言概述汇编语言是一种与机器语言直接对应的语言,每一条指令都可以直接被计算机硬件执行。
相比高级语言,汇编语言更加接近计算机底层,因此执行效率更高。
汇编语言通常包括指令集、寄存器和内存等概念。
1. 指令集汇编语言的指令集是由一系列指令组成的,这些指令可以直接被计算机执行。
指令集通常包括算术指令、逻辑指令、数据传输指令等,每个指令具有特定的功能和操作码。
2. 寄存器寄存器是计算机内部用于存储数据和执行操作的存储器。
在汇编语言中,寄存器用于进行数据传输、算术运算和逻辑操作等。
常见的寄存器包括通用寄存器、特殊寄存器和段寄存器等。
3. 内存内存是计算机用于存储指令和数据的地方。
在汇编语言中,程序员可以直接操作内存地址,进行数据的读取和存储。
通过合理地利用内存,可以提高程序的执行效率。
二、基本语法和数据表示在汇编语言中,程序员需要掌握基本的语法和数据表示方法,以编写正确的程序。
1. 语法汇编语言的语法是由指令、操作数和注释组成的。
指令是计算机执行的命令,操作数是指令所涉及的数据或寄存器。
注释用于解释程序的功能和作用。
2. 数据表示在汇编语言中,数据可以表示为二进制、十进制、十六进制等形式。
程序员需要根据实际需求选择适当的表示方式,并了解不同进制之间的转换方法。
三、程序设计实例为了更好地理解和应用汇编语言程序设计知识,我们将通过一个实例来演示程序设计的过程。
假设我们需要编写一个汇编程序,实现两个数相加的功能。
下面是程序的伪代码表示:```1. 将第一个数存储到寄存器A2. 将第二个数存储到寄存器B3. 将寄存器A和寄存器B的值相加,结果存储到寄存器C4. 将寄存器C的值存储到内存中```根据上述伪代码,我们可以编写如下的汇编程序:```MOV AX, num1 ; 将第一个数存储到寄存器AXMOV BX, num2 ; 将第二个数存储到寄存器BXADD AX, BX ; 将寄存器AX和寄存器BX的值相加MOV result, AX ; 将寄存器AX的值存储到result内存地址中```通过上述程序,我们实现了两个数相加的功能,并将结果保存在result变量中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章1、什么是汇编语言?2、汇编语言程序设计过程:编辑源程序,编译(汇编),连接,运行调试3、汇编语言特点?与机器语言一一对应,直接操作硬件,高效率(空间和时间,运行速度快,目标代码短,占用存储空间少)4、数制转换第2章8086计算机组织结构1、计算机硬件系统组成:CPU、存储器、输入输出设备。
2、CPU组成:运算器、控制器、寄存器,运算器和控制器由芯片设计时设计好,不可做任何改动,程序设计员仅能在程序里使用寄存器,寄存器都有相应的名字,如AX,能在程序里直接使用寄存器是汇编语言区别于高级语言的最重要特点,这样就可以直接控制硬件系统。
3、总线结构:数据总线、地址总线、控制总线。
数据总线分8位、16位、32位和64位等,多少位机就是以数据总线来划分,比如8位机、32位机。
8086机是16位机,但地址总线是20位,地址总线数量决定了内存寻址空间的大小,如8086有20位地址线,那么寻址空间是:220=210*1K=1M,8086最大寻址空间为1MB,即地址范围:00000H~FFFFFH。
控制总线主要传送控制信息,如读写操作,读写操作的主体是CPU,读操作是指CPU从内存或外设读取数据,写操作是指CPU把数据写到内存或外设中。
4、存储器:存储器的最小单元是字节(Byte,由8个位组成),字节的多少就是存储器的容量。
每一个字节单元都有一个唯一的编号,这个编号就是字节单元的地址,此地址就是物理地址,对于8086而言,编号的形式为:XXXXXH,如85421H。
如果要读写存储器,必须知道某一个字节单元的地址。
多个字节单元可以组合成更大的单元(数),比如2个字节单元组合成一个字(Word),4个字节单元组合成一个双字(Double Word)等,规定:这个组合后的大单元是以最小字节单元地址为自己的地址。
如85421H字节单元内容为12H,85422H 字节单元内容为34H,那么以85421H地址的字单元的内容就是3412H。
地址取最小字节单元的地址为大单元的地址。
内容排序按照“高高低低”原则:高字节放在高地址里,低字节放在低地址里。
详细请参看2.3节(P30页)5、8086CPU寄存器(1)通用类:AX(AH,AL)、BX(BH,BL)、CX(CH,CL)、DX(DH,DL)(2)段寄存器类:CS、DS、ES、SS(3)与偏移地址相关类:SI、DI、SP、BP(4)特殊类:IP、FLAGS所有寄存器都是16位大小,通用类的16位又可看成2个8位的寄存器组成,区分为高8位(High)和低8位(Low),因此取名为AH和AL,其他类似。
CS:存放代码段段地址,DS:存放数据段段地址,SS:存放堆栈段段地址,ES:存放数据附加段段地址,一般作为DS的辅助使用,比如在一段程序里需要用到2个不同数据段的数据时,其中一个数据段段地址存放在DS中,另一个存放在ES中。
SI、DI:一般用于变址寻址方式,如[BX+SI]、[BX+DI],SP:堆栈段中堆栈栈顶的偏移地址,不可修改,由SS:SP逻辑地址始终指向堆栈的栈顶。
详细参看2.3.2,P32页BP:一般也用于堆栈,可以作为SP的备份,通常也是用SS:BP逻辑地址表示,BP可以随意修改,因此通过SS:BP可以访问堆栈的任何地方。
此外,BP还与BX一样,可以作为基地址方式进行寻址,比如[BP+SI]、[BP+DI],但此时访问的数据是指堆栈段里的,如果要访问数据段的必须明显写出DS,如DS:[BP+SI]、DS:[BP+DI]IP:指令指针,有CS:IP逻辑地址始终指向下一条即将执行指令的地址,如果要使程序进行跳转,必须改变CS和IP的值,但CS和IP寄存器不能直接修改(比如用MOV),只能通过跳转指令来修改,如JZ、JMP、LOOP等。
FLAGS:标志位寄存器,记录CPU运算器的状态,可以进行位操作,CF:进位标志,ZF:运算结果0标志,SF:运算结果符号标志,OF:溢出标志,其他的暂时不需要记。
6、分段机制8086的数据线为16位,地址线为20位,寄存器也是16位的,由于读写存储器(内存)单元时,需要知道存储器单元的地址,如XXXXXH,这个地址如何在16位的数据线上传输,传输到寄存器(XXXXH)里,如何在寄存器里保存,用一个寄存器是保存不了的,必须用2个寄存器,第一个寄存器存放的地址XXXXH,我们称为段地址,放在CS、DS、ES和SS中。
物理地址=段地址*10H+偏移地址(H,全部用十六进制表示)物理地址:xxxxxH,逻辑地址:xxxxH:xxxxH,逻辑地址表示方法,冒号前面的叫做段地址,后面的叫偏移地址。
简单换算方法:逻辑地址转物理地址方式是将段地址后面加个0,与偏移地址相加即可第三章指令系统与寻址方式1、指令格式:如Tab:Mov ax,bx;注释Tab是标号,标号后必须紧跟一个冒号,标号代表当前指令在内存中的位置,编译成二进制代码后,标号就不存在了;Mov是操作码,表示当前指令的作用、功能;ax是目的操作数,bx是源操作数,两者表示参与指令操作的数,目的操作数存放最后指令操作的结果;分号后边的是注释,说明当前指令的过程,方便程序的阅读。
因此可以写成:“标号:操作码目的操作数,源操作数;注释”“标号,注释”不一定每条指令都有,操作数也可能有一个,也可能没有,也可能有两个。
2、提供操作数的方式:(1)立即数;(2)通过寄存器(一般指通用寄存器);(3)通过内存(必须要提供或者能计算出内存的地址)目的操作数不能是立即数,源操作数和目的操作数不能同时为内存操作数。
3、寻址方式:将操作数来自于不同的地方进行分类:立即数寻址、寄存器寻址、内存寻址(1)立即数寻址:操作来自立即数,即立即数寻址,如mov ax,1234H,1234H为立即数。
(2)寄存器寻址:操作数来自于寄存器,如上述指令中的ax,即为寄存器寻址。
(3)内存寻址:操作数来自于内存,需要给出或者计算出内存的地址,根据获得这个地址的方式不同,又分为以下几种方式:1)直接寻址:直接给出内存地址(一般是偏移地址),如mov ax,[1000H],1000H就是内存地址。
2)寄存器间接寻址:内存地址事先放在寄存器里,要通过取出寄存器里的值才能得到地址,如mov ax,[bx],内存的地址在bx里,假设bx里的值是1200H,那么指令首先通过bx得到1200H,再去内存找到1200H地址。
存放间接地址的寄存器只能是:bx,bp,si,di3)寄存器相对寻址:在寄存器间接寻址的基础上有个常数偏移量,如mov ax,[bx+1000H],假设bx里的值是1200H,那么指令首先通过bx得到1200H,再去内存找到1200H,然后基于这个1200H地址,向后再偏移1000H,才能得到真正要的数,所以实际上的地址是1200H +1000H。
常量对应的是“相对”。
有多种写法:[bx+1000H]、1000H[bx]、[bx]+1000H,都可以,使用的寄存器也只能是:bx,bp,si,di4)基址变址寻址方式:在寄存器相对寻址里的“相对常量”放在另一个寄存器里,如mov ax,[bx+1000H],如果事先将1000H放在SI寄存器里,那么指令就变成:mov ax,[bx+si],这就是基址变址寻址方式,前面的bx表示基地址,si表示变化的地址,把两个寄存器的值相加才是要的内存地址,也可以写成mov ax,[bx][si],经常采取这种方式来遍历内存数据,因为只要改变si的值即可。
基地址只能用bx、bp,变地址只能用si、di。
5)相对基址变址寻址方式:在基址变址寻址方式的基础上,再加一个常量即可,如mov ax, [bx+si+2000H],把两个寄存器的值和常量相加才是要的内存地址,也可以写成mov ax, 2000H[bx+si]或者mov ax,2000H[bx][si],基地址只能用bx、bp,变地址只能用si、di。
4、无条件转移指令:jmp标号标号表示目的地址,标号表示对应指令在内存中的地址,一般由CS和IP组合表示,如CS:IP,CS是代码段寄存器,IP是指令指针寄存器。
如果转移不涉及到CS的变化,表示段内转移,如果CS必须改变,就是段与段之间的转移。
如果代表指令地址的标号的值事先放在寄存器或者某一个内存(一般通过寄存器间接表示)里,也可以用寄存器或内存地址代表标号,如jmp bx,执行jmp指令后,IP寄存器的值就等于bx的值了,如jmp[bx],先通过bx找到内存,再从内存中取出值来才是要转移的地址。
如果要从内存中取出4个字节来改变CS和IP,那么需要在前面加DWORD PTR,如jmp DWORD PTR[bx]。
5、指令系统(1)数据传送类:mov push/pop xchg LEA(offset)(2)算术运算类:ADD,ADC,INC,SUB,SBB,DEC,NEG,CMP,MUL,IMUL,DIV,IDIV,CBW,CWD(3)逻辑运算类:AND,OR,NOT,XOR,TEST(4)移位指令类:SAL,SAR,SHL,SHR,ROL,ROR,RCL,RCR(5)条件转移类:JZ,JNZ,JC,JNC,JS,JNS,JA,JBJG,JL第四章程序结构1、完整段定义程序框架2、伪指令常量定义:常量名EQU表达式,如X EQU100,常量不占数据段内存地址变量定义:变量名类型初始值,如Y db1,2,3,类似高级语言中的数组定义,初始值可以是数字、表达式、字符、字符串等。
类型有:DB,DW,DD初始值可以是?$,?SEG,OFFSET,TYPE,LENGTH,SIZE,PTR(BYTE,WORD,DWORD)第五章顺序、分支与循环程序设计1、分支:二分支结构,多分支结构用条件转移指令实现程序的分支,用跳转表法实现多分支结构构造条件指令:CMP转移指令:JC,JNC,JZ/JE,JNZ/JNE,无符号数比较大小(Above,Below,Equal):JA,JB有符号数比较大小(Great,Less,Equal):JG,JL2、循环:Do-While结构,While-Do结构包括:循环初始化,循环体,循环控制三部分循环控制指令:LOOP,用于明确知道循环次数的应用,类似于高级语言的FOR语句循环次数事先放在CX里,每次执行LOOP时,首先让CX=CX-1,然后再检测CX是否等于0,如果等于0就停止循环,不等于0就继续循环。
以下问题是否都搞清楚了?1、汇编语言特点、优势,汇编语言指令的组成?2、编码及其含义,比如一个数01000010B可以有多种解释,比如96H也有种描述;压缩BCD 码、非压缩BCD码、及其转换。
3、补码概念和计算,如01111110B与10000001B哪个大?数制的转换,如64.8H=D= B,数表示范围(八位、十六位、有符号数、无符号数等)。