《汇编语言》
- 格式:doc
- 大小:412.00 KB
- 文档页数:58
汇编语言的名词解释1. 什么是汇编语言?汇编语言(Assembly Language)是一种低级计算机语言,用于直接控制计算机硬件操作的编程语言。
它是由一系列符号化的指令组成,每条指令对应着一条特定的机器码(二进制代码)。
汇编语言与计算机体系结构紧密相关,不同的计算机体系结构使用不同的汇编语言。
与高级语言相比,汇编语言更接近底层硬件,并且更加直观。
通过使用特定的助记符和操作码,程序员可以直接操作寄存器、内存和其他硬件资源。
尽管汇编语言通常比高级语言更难以理解和编写,但它可以提供更高的性能和对底层硬件的更好控制。
2. 汇编指令集2.1 指令在汇编语言中,指令是最基本的操作单位。
每条指令执行一个特定的操作,并且可能包含一个或多个操作数。
2.2 寄存器寄存器是位于CPU内部的小型存储单元,用于临时存储数据和执行算术逻辑运算。
不同架构的计算机具有不同数量和类型的寄存器。
例如,x86架构的计算机有通用寄存器、段寄存器、标志寄存器等。
2.3 内存内存是计算机中用于存储程序和数据的地方。
在汇编语言中,内存可以通过地址来访问。
地址可以是直接指定的常数,也可以是通过寄存器间接指定的。
2.4 操作数操作数是指令所操作的数据。
它可以是立即数(常数)、寄存器、内存位置或者两个操作数之间的运算结果。
2.5 标志位标志位是一组二进制标志,用于表示某些特殊状态或条件。
例如,零标志位(ZF)用于表示上一条指令执行结果是否为零。
3. 汇编语言与机器码汇编语言与机器码之间存在一对一的映射关系。
每条汇编指令都对应着一个特定的机器码,它由一串二进制数字表示,并被计算机硬件直接执行。
汇编语言使用助记符(Mnemonic)来代替复杂而难以记忆的二进制代码。
例如,MOV指令用于将数据从一个位置复制到另一个位置,在x86架构中对应着机器码89。
编写汇编语言程序时,程序员需要将高级语言代码转换为汇编指令。
这可以通过手动编写汇编指令来完成,也可以通过汇编器(Assembler)自动将高级语言代码转换为汇编指令。
《汇编语言(第4版)》读后感《汇编语言(第 4 版)》是王爽编著的一本关于汇编语言的教材,这本书的教学重心是通过学习关键指令来深入理解机器的基本原理,培养底层编程意识和思想。
我从事嵌入式软件开发,工作中经常会碰到底层问题,需要分析系统 crash 的原因,因此我希望通过学习汇编语言来拓宽自己的知识面。
在部门技术总监的推荐下,我翻开了这本书,没想到一读就被吸引进去,真是让人欲罢不能的好书!本书前言提到:“本书的教学重心是:通过学习关键指令来深入理解机器的基本原理,培养底层编程意识和思想。
”这句话明确了本书的教学目标,即通过学习关键指令来深入理解机器的基本原理,培养底层编程意识和思想。
这与我的需求不谋而合,因此我决定认真学习这本书,希望能够提高自己的编程能力和解决问题的能力。
本书通过指令,引入寄存器、跳转、中断、栈操作、端口等概念,借助这些概念讲解计算机程序原理。
然后需要自己上机编程,加深对原理的理解。
可以说,本书表面上讲述的是“过时”的 8086 汇编语言,但这只是表象,深入进去,里面都是通用的、可以迁移的内容。
作者在本书中贯彻者“循序渐进”的原则。
为了解决初学者在学习过程中所接触到的每一个知识点都是当前唯一要去理解的东西,本书对教学内容进行了最小化分割,力求使我们在学习过程中所接触到的每一个知识点都是当前唯一要去理解的东西。
这样,知识固然被打散了,但是对于初学者来说,“这同沿着楼梯上高楼一样,迈出的每一步都不高,结果却上了楼顶”。
乍看觉得这很理想主义,但认真学习本书,就知道并非虚言。
循序渐进的原则不仅在本书正文中贯彻,习题也是如此。
作者在前言明确表示,“没有通过检测点不要向下学习”,“没有完成当前的实验不要向下学习”,书中像这样的话也是经常出现:“这个编程任务必须在进行下面的课程之前独立完成,因为后面的课程中,需要通过这个实验而获得的编程经验。
”这说明有的知识点,有的感觉,只通过正文讲解是无法让读者入脑的,必须通过习题,让读者思考,或者上机实验,特别要经历过错误后调试正确,才会悟到一些东西,找到一些感觉。
《汇编语言程序设计》教案附:习题参考答案《汇编语言程序设计》(第4版)钱晓捷主编前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。
它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。
3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。
(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。
(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。
(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。
(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。
(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。
(7).第九章说明BIOS和DOS系统功能调用的使用方法。
(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。
附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (1)1.1进位计数制与不同基数的数之间的转换 (1)1.2二进制数和十六进制数的运算 (2)1.3计算机中数和字符的表示 (3)1.4几种基本的逻辑运算 (3)第 2 章 80X86计算机组织 (4)2.180X86微处理器 (4)2.2基于微处理器的计算机系统构成 (4)2.3中央处理机 (5)2.4存储器 (6)2.5外部设备 (7)第 3 章 80X86的指令系统和寻址方式 (8)3.180X86的寻址方式 (8)3.2程序占有的空间和执行时间 (10)3.380X86的指令系统 (10)第 4 章汇编语言程序格式 (27)4.1汇编程序功能 (27)4.2伪操作 (27)4.3汇编语言程序格式 (31)4.4汇编语言程序的上机过程 (34)第 5 章循环与分支程序设计 (37)5.1循环程序设计 (37)5.2分支程序设计 (38)5.3如何在实模式下发挥80386及其后继机型的优势 (38)第 6 章子程序结构 (40)6.1子程序的设计方法 (40)6.2子程序的嵌套 (41)6.3子程序举例 (41)第 7 章高级汇编语言技术 (43)7.1宏汇编 (43)7.2重复汇编 (44)7.3条件汇编 (45)第 8 章输入/输出程序设计 (46)8.1I/O设备的数据传送方式 (46)8.2程序直接控制I/O方式 (47)8.3中断传送方式 (47)第 9 章 BIOS和DOS中断 (50)9.1键盘I/O (50)9.2显示器I/O (52)9.3打印机I/O (53)9.4串行通信口I/O (54)第 10 章图形与发声系统的程序设计 (55)10.1显示方式 (55)10.2视频显示存储器 (55)10.3EGA/VGA图形程序设计 (56)10.4通用发声程序 (57)10.5乐曲程序 (58)第 11 章磁盘文件存取技术 (59)11.1磁盘的记录方式 (59)11.2文件代号式磁盘存取 (60)11.3字符设备的文件代号式I/O (61)11.4BIOS磁盘存取功能 (62)附录:《IBM—PC汇编语言程序设计》习题参考答案 (63)第一章.习题 (63)第二章.习题 (64)第三章.习题 (65)第四章.习题 (79)第五章.习题 (84)第六章.习题 (104)第七章.习题 (118)第八章.习题 (125)第九章.习题 (130)第十章.习题 (134)第十一章.习题 (145)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
汇编语言的名词解释汇编语言是一种低级编程语言,用于编写计算机程序。
它是一种符号化的机器语言表示形式,通过汇编程序翻译成机器指令,以便能够被计算机执行。
在汇编语言中,使用各种名词来描述不同的概念和操作。
1. 汇编语言 (Assembly language)汇编语言是一种使用助记符(Mnemonics)和符号(Symbol)来代替二进制代码的编程语言。
它直接对应于计算机的指令集体系结构,可以通过助记符和符号来描述计算机的操作、寄存器、内存地址等信息。
2. 指令 (Instruction)指令是汇编语言中最基本的单位,用于指示计算机执行某种操作。
指令通常以助记符的形式表示,例如MOV、ADD、JMP等。
一个指令包含操作码(Opcode)和操作数(Operand),操作码表示需要执行的操作,操作数则提供了操作所需的数据或地址。
3. 寄存器 (Register)寄存器是用于存储和操作数据的高速内存单元。
汇编语言使用寄存器来进行计算、传输数据和控制程序流程等操作。
通常,寄存器具有特定的名称和功能,例如AX、BX、CX等通用寄存器,以及SP、BP、SI、DI等特殊用途寄存器。
4. 内存地址 (Memory Address)内存地址指示了计算机内存中存储数据的位置。
在汇编语言中,使用内存地址来读取和存储数据。
内存地址可以通过直接给出地址值或使用标号(Label)来表示。
5. 标志位 (Flag)标志位是用于记录计算机运算过程中的条件结果的特殊寄存器。
在汇编语言中,标志位可用于控制程序的跳转、判断条件和处理中断等操作。
6. 宏指令 (Macro)宏指令是一种能够扩展和简化程序的代码片段。
它可以在汇编语言中定义和调用,类似于高级编程语言中的函数或宏定义。
宏指令能够减少代码重复和提高程序的可维护性。
7. 伪指令 (Pseudo-Instruction)伪指令是汇编语言中的一种特殊指令,用于给汇编程序提供附加的信息和指导。
汇编语言(编程语言)—搜狗百科汇编语言汇编语言(Assembly Language)是面向机器的程序设计语言。
汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。
常说汇编语言过时,是低级语言,并不是说汇编语言要被丢弃,相反,汇编语言仍然是程序员必须了解的语言,甚至在某些行业与领域,汇编是必不可少的,非它不可适用。
只是,现在计算机最大的领域为IT软件,也是我们常说的Windows编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率和性能比用其它语言写的程序优秀数倍,但是代价是需要更长的时间来优化,如果对计算机原理及编程基础不扎实,实在是得不偿失,对比现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可能让一个团队使用汇编语言来编写所有的东西,因为这要花上几倍甚至几十倍的时间,不如使用其它语言来完成,只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下的必然结果。
但是,至今为止,还没有程序员敢断定汇编语言是不需要学的。
一个不懂汇编语言的程序员,只是三流的程序员,这是大部分人的共识;同时,技术汇编语言(Assembly Language)是面向机器的程序设计语言,精湛的汇编程序员,已经脱离软件开发,挤身于工业电子编程中。
一个电子工程师,主要的开发语言就是汇编,c语言使用只占极少部分,而电子开发工程师更是千金难求,在一些工业公司,一个核心的电子工程师比其它任何职员待遇都高。
对比起来,一般电子工程师待遇是程序员的十倍以上,这种情况是因为现在学习汇编的人虽然也不少,但是真正能学到精通的却不多,它难学,难用,适用范围小,虽然简单,但是过于灵活,学习过高级语言的人去学习汇编比一开始就去学汇编的人难得多,但是学过汇编的人学习高级语言却很容易,简从繁易,繁从简难。
汇编语言各章习题答案习题一答案:1.1无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H,00101111=+47=2FH,10101010= -86=AAH1.2 5E8AH,0BE6H,3DEH,4940H1.3 00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH= -1171.4 00101001+01010011=01111100+00000110=10000010=82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2071.5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H1.6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 1.7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码1.8(1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H(2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H(4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H1.9(1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0(4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=11.10回车、换行、响铃、ESC键、空格键、@、P、p习题二答案:2.9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)2.10CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP2.11字节单元保存8位数,字单元保存16位数。
华中师范大学网络教育学院《汇编语言程序设计》练习测试题库一 .选择题(只有一个正确答案,填在题干前的括号里)1.一台完整的计算机系统包括_________。
A.硬件系统和软件系统B.系统硬件和系统软件C.控制器、运算器、存储器、输入设备和输出设备D.操作系统、机器语言、汇编语言、高级语言2.汇编程序属于_________。
A.硬件系统B.软件系统C.系统软件D.用户软件3.简单的汇编语言程序可以通过_________来建立A.连接程序B.调试程序C.汇编程序D.编辑程序4.8086/8088微处理器包含有两个独立的部件_________和_________。
A.R和ALUB.CS和IPC.BIU和EUD.CPU和I/0设备5 .进行汇编语言编程时,设计者应该考虑一些基本的要求,下列叙述不正确的是____。
A.程序应该结构化B.程序应该执行速度快C.程序应该占用空间大D.程序应该简明、易读、易懂6 .一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是____。
A.12C5BHB.12B6BHC.12C59HD.12BFEH7 .字符串HOLLO的ASCII代码表示为____.A.484F4C4C4FHB.484F4D4D4FHC.494F4C4C4FHD.494F4D4D4FH8.如果内存中某一单元的物理地址是20B4CH,那么它的逻辑地址是_________:212CH。
A. IEA2HB. IEB2HC. IFA2HD. IFB2H9,现有段地址和偏移地址为1025H:0F2AH,那么它所对应存储单元中的物理地址是_________。
A. 1107AHB. 01F4FHC. 11F4FHD. 1117AH10.一个有16个字的数据区,它的起始地址是1000H:117AH,请指出这个数据区最末一个字单元的物理地址是_________。
A.111ACHB.11190HC .11198HD.1119AH11.在机器内部操作中,CPU与存储器之间的任何信息交换使用的都是_________。
汇编语言重点知识总结汇编语言是一种低级程序设计语言,它直接操作计算机硬件资源,具有较高的执行效率和灵活性。
本文将重点总结汇编语言的相关知识,涵盖指令集、寻址模式、数据传送和运算、控制流等方面。
一、指令集1. 数据传送指令:包括MOV、LEA等指令,用于在寄存器和内存之间传输数据。
2. 算术运算指令:包括ADD、SUB、MUL、DIV等指令,用于进行加减乘除等数值运算。
3. 逻辑运算指令:包括AND、OR、NOT等指令,用于进行逻辑与、逻辑或、逻辑非等操作。
4. 跳转指令:包括JMP、JZ、JE等指令,用于实现程序的跳转和条件判断。
5. 栈操作指令:包括PUSH、POP等指令,用于实现数据的入栈和出栈操作。
6. 串操作指令:包括MOVSB、CMPSB等指令,用于字符串的复制、比较等操作。
二、寻址模式1. 直接寻址:使用给定的地址访问内存中的数据,如MOV AX, [1234H]。
2. 寄存器间接寻址:使用寄存器中存储的地址访问内存中的数据,如MOV BX, [SI]。
3. 寄存器相对寻址:使用寄存器和偏移量的组合访问内存中的数据,如MOV CX, [BX+DI]。
4. 基址变址寻址:使用基址寄存器和变址寄存器的组合访问内存中的数据,如MOV AX, [BX+SI+10H]。
5. 相对基址变址寻址:使用基址寄存器、变址寄存器和偏移量的组合访问内存中的数据,如MOV AX, [BX+SI+10H+DI]。
三、数据传送和运算1. 数据传送:使用MOV指令将数据从一个位置传送到另一个位置,如MOV AX, BX。
2. 位操作:使用AND、OR、XOR等指令进行位与、位或、位异或等操作。
3. 算术运算:使用ADD、SUB、MUL、DIV等指令进行加减乘除等运算。
4. 位移操作:使用SHL、SHR、ROL、ROR等指令进行位左移、位右移、循环左移、循环右移等操作。
四、控制流1. 无条件跳转:使用JMP指令无条件跳转到指定的地址。
《汇编语言》讲义曹永忠吴宣为信息工程学院2007/7/17 v1.02009/3/20 version 2.0第一章预备知识一、教学基本内容1、了解机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,正确认识学习汇编语言的重要性。
2、掌握8086处理器中各寄存器的符号表示形式、大小及主要用途。
3、理解主存的编址方式以及存储器物理地址形成的方式。
4、理解8086处理器关于使用堆栈的有关规定,掌握堆栈操作指令的功能以及使用格式。
5、掌握数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式。
6、掌握标志寄存器中各标志位的置位方式。
重点:主存的编址方式以及存储器物理地址形成的方式难点:堆栈的概念及使用。
二、知识点:1、机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,要求达到“识记”层次。
2、8086处理器中各寄存器的符号表示形式、大小及主要用途,要求达到“识记”层次。
3、主存的编址方式以及存储器物理地址形成的方式,要求达到“理解”层次。
4、堆栈的概念及堆栈操作指令执行后内存及相关寄存器值的变化,要求达到“理解”层次。
5、数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式,要求达到“理解”层次。
6、标志寄存器中各标志位的置位方式,要求达到“识记”层次;运算对各标志位的影响,要求达到“掌握”层次。
1.1机器语言和汇编语言1、机器语言●三种语言的层次关系机器语言汇编语言高级语言●机器指令:指挥计算机完成某一基本操作的命令。
格式:操作码地址码1 地址码2例:将偏移地址为100的字存储单元中的内容加2,在回送到原存储单元中去的机器指令如下:8306640002其中8306H为操作码6400H 为目的操作数02H 为源操作数●指令系统:机器指令面向机器,每台计算机都规定了自己所特有的一定数量的基本指令,这批指令的全体即为该计算机的指令系统●机器语言:这种机器指令的集合。
●机器语言程序:用机器语言编写的程序。
2、汇编语言ADD WORD PTR DS:[100],2● 汇编语言:用助记符表示机器指令的操作码; 用变量代替操作数的存放地址;在指令前冠以标号,用来代表指令的存放地址 ● 汇编语言与机器语言 注: 汇编程序:能够将汇编源程序翻译成目标程序(机器语言) ● 汇编语言的特点:① 所占空间、执行速度与机器语言相仿② 直接、简捷,能充分控制计算机的硬件功能1.2 Intel 8086 微处理器简介通用寄存器: AX(累加器) BX(基址寄存器) CX(计数器)DX(数据寄存器) ;可以分8位使用。
指针及变址寄存器: SP(堆栈指针寄存器) BP(基址指针寄存器) SI(源变址寄存器) DI(目的变址寄存器)IP(指令指针寄存器):用来存放下一条要执行指令在内存中代码段中的偏移地址。
1.3主存储器和堆栈1、 主存储器● 主存的基本存储单位是位(bit ),它能容纳一个二进制数的0或1 ● 字节编址:以字节为最小寻址单位。
● 8086的最大寻址空间1M● 字的存放形式“低位在前,高位在后”00200H 起 取一个字得 3412H00201H 起 取一个字得 5634H● “对准字”和“不对准字” 2、 堆栈在内存中开辟出一片存储区,采用一端固定,另一端活动的方式存取数据。
堆栈的图示:● 进栈指令 PUSH格式: PUSH OPS功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈。
(SP)-2 → SP 例:假设(SP )=1000H (AX )= 1234H PUSH AX (SP)=0FFEH注:PUSH AL ;错误PUSH 0003H ;错误● 出栈指令 POP格式: POP OPD功能:将栈顶元素(字)弹出送至寄存器、段寄存器(CS 除外)或存储器中。
(SP )+2 → SP 例:设 (BX)=2004H POP BX执行后: (BX)=1234H (SP)=1000H 注:PUSH CS ;正确 POP CS ;错误3、 存储器的分段管理 ● 地址表示的一对矛盾:直接寻址能力为1M ( 202字节);而寄存器是16位结构的。
● 解决方法:引入了存储器“分段”的概念,即把1M 字节内存空间分成若干段。
每段最大可达64K 字节--可由16位寄存器进行寻址。
段的起始地址成为“段基址”,要访问的单元距段基址的距离(字节数)为“偏移量”(Offset )。
程序设计时,使用的是逻辑地址。
逻辑地址由“段基址”和“偏移量”构成(均为16位)。
“段基址”由段寄存器CS 、DS 、SS 和ES 提供;“偏移量”由BX 、BP 、IP 、SP 、SI 、DI 或根据寻址方式计算出的有效地址EA (Effective Address )提供。
● 注意:①每个存储单元有唯一的物理地址,但它却可由不同的―段基址‖和―偏移量‖组成。
例如:1200H:0345H →12345H 1100H:1345H →12345H② 除非专门指定,一般情况下,段在存储器中的分配是由操作系统负责的。
例1:设(CS )=8000H (IP)=0100H问下一条要执行的指令的物理地址PA?……段的起始地址 偏移量要访问的单元段(CS)内容左移4位+(IP)PA = 80000H+0100H=80100H例2:设(DS)=1000H 该数据段中偏移量为0200H处的物理地址PA?(DS)内容左移4位+偏移量PA = 10000H +0200H =10200H例3:设(SS)=1000H (SP)=2000H 问该堆栈段栈顶的的物理地址PA?(SS)内容左移4位+(SP)PA = 10000H +2000H =12000H1.4 数值数据在机器内的表示形式8086的两个规定:①数值数据均指无符号定点数②有符号数则一律采用n位二进制补码表示。
例1:设M = 14 = 0EH[M]补 = 0EH机器内:Array扩展成16位后:[M]补 = 000EH机器内:例2:设M = -14 = -0EH[M]补 = 0F2H机器内:Array扩展成16位后:[M]补 = 0FFF2H机器内:注:最高位(符号位)向左扩展若干位后,仍是该数的补码。
8086中,16位补码的表示范围:7FFFH ~~ 8000H注:机器在进行算术运算时,总是把参加运算的用补码表示的操作数作为无符号数处理。
1.5 字符数据在机器内的表示形式1、ASCII码(美国信息标准交换码)●字符数据是以ASCII码形式存放在内存中的。
例如―1‖就是31H―A‖就是41H2、BCD码定义:利用二进制形式来表示十进制数。
利用4位二进制数(0000B~1001B)来表示十进制数(0~9)例如:19 = 00011001BCD= 000010011B●压缩BCD(组合BCD)一个字节存放两个十进制数位例如19非压缩BCD(非组合BCD)一个字节存放一个十进制数位例如19注:这种情况下,高四位全零;低位在前,高位在后。
1.6 标志寄存器1、状态标志:表示前面的操作执行后,算术逻辑部件处于怎样一种状态。
例如,是否产生了进位,是否发生了溢出等等。
程序中,可以通过对某个状态标志的测决定后面的走向及操作。
例如:STATE: IN AL, 0DAH;TEST AL, 02H;JZ STATE●零标志ZF(Zero Flag):若运算结果为0,则ZF=1;否则ZF=0。
例1:MOV AL, 4SUB AL, 4例2:XOR AX, AX执行后,ZF也一定为1。
●进位标志CF(Carry Flag):它反映:加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。
减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。
例如:MOV AL, 3;SUB AL, 4;执行后,CF=1。
●奇偶标志PF(Parity Flag):若运算结果低8位中“1”的个数为偶数,则PF=1;否则PF=0。
例:MOV AL, 2ADD AL, 1执行后,PF位为1。
●辅助进位标志AF(Auxiliary carrry Flag):也称“半进位标志”,它反映:加法时,第3位向第4位有进位;减法时,第3位向第4位有借位。
●溢出标志OF(Overflow Flag):若运算过程中发生了“溢出”,则OF=1。
定义:运算结果超出计算装置所能表示的范围,称为溢出。
判断方法之一【逻辑】:溢出=最高位进位⊕次高位进位例:分析执行下述两条指令后,以上六个标志位的变化。
MOV BL,58HADD BL,4AH解: 01011000B+ 01001010B10100010BCF=0 SF=1 OF=1 PF=1 ZF=0 AF=12、控制标志(3位):每一位控制标志都对一种特定的功能起控制作用。
可以通过专门的指令对其进行“置位”(Set)或“复位”(Reset)。
●中断标志IF(Interrupt Enable Flag):如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。
指令系统中有两条专门的指令可以置“1”或置“0” IF标志位:STI 使IF置“1”,即开放中断。
CLI 使IF清“0”,即关闭中断●方向标志DF(Direction Flag):用于串操作指令中的地址增量修改(DF=0)还是减量修改(DF=1)。
STDCLD●跟踪标志TF(Trap Flag):若TF=1,则CPU按跟踪方式(单步方式)执行程序。
4、标志位寄存器的操作●传送LAHF功能:将标志位寄存器的低8位送入AH中,即:(FLAGS)7~0 → AH例:执行前(FLAGS)=0485H (AX)=0FFFFH执行后(FLAGS)=0485H (AX)=85FFHSAHF功能:将AH的内容送入标志位寄存器的低8位中,即: AH →(FLAGS)7~0●栈操作PUSHFPOPF例:MOV AX,0FFFFHPUSH AXPOPF结果:(FLAGS)=0FFFFH1.7 常用指令简介功能:将BX中的内容放到AX中其他指令:ADD AX,100SUB AX,100INC AXDEC BX第二章、寻址方式教学目的与要求熟练掌握六种寻址方式(立即方式、直接方式、寄存器方式、寄存器间接方式、变址万式基址加变址方式〕的汇编格式、功能及使用方法。
教学内容1、寻址方式的基本概念。
2、六种寻址方式的汇编格式、功能及使用方法。
3、寻址方式的应用。
考核知识点与考核要求六种寻址方式的汇编格式、功能及使用方法,比较各种寻址方式的应用场合,要求达到“掌握”层次。
所谓寻址方式:就是寻找操作数存放地址的方式。