汇编语言程序设计实践教程课件.pptx
《汇编语言程序设计实践教程课件.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计实践教程课件.pptx(301页珍藏版)》请在三一办公上搜索。
1、1,教材:汇编语言程序设计实践教程 欢迎提意见!汇编语言程序设计 丁辉 电子工业出版社,后续课程:微机接口技术及实验,是微机原理与接口技术及实验的一部分,汇编语言程序设计实践教程,汇编语言asm2005,2,目录,第一章 汇编语言程序设计基础第二章 汇编语言程序设计入门第三章 算术运算程序第四章 代码转换程序第五章 系统调用程序第六章 表处理程序第七章 子程序及其与主程序参数传递,3,1、重要性2、特点3、学习方法4、考核要求,引言,4,1、重要性,专业基础课:电类、工科、理科有助于微机应用水平提高计算机等级考试:三级PC机技术研究生入学考试,5,2、特点,A,B,C,概念间关系:网状,理解困
2、难,内容多:汇编语言、微机原理、接口技术,6,3、学习方法,理解与记忆:尽快适应预习与复习:学习效率实验与习题:针对强教与学,教:难点、要点目的:让学生少走弯路,提高效率学是关键,敢问!会问!,7,4、考核要求,笔试:期末:50%笔试内容充分结合实验内容!实验:预习、操作、报告,30%平时:作业、考勤、态度、提问:20%作业、实验报告必须手写!,8,第一章 汇编语言程序设计基础,1.1 二进制数和十六进制数1.2 无符号数和带符号数1.3 微机基本原理1.4 8086CPU1.5 DEBUG操作(一)1.6 判断标志位实验1.7 计算机中的十进制数及其运算原理1.8 BCD码运算实验,9,1.
3、1 二进制数和十六进制数,日常生活:十进制、十二进制、六十进制计算机:二进制、十六进制,n位整数m位小数:Xn-1Xn-2Xn-3X2X1X0X-1X-2X-m+1X-m数学意义:X=Xn-1En-1Xn-2En-2Xn-3En-3 X2E2X1EX0 X-1E-1X-2E-2.X-m+1E-m+1X-mE-m(0XiE-1)E=10、16、2、,10,1.1.1 二进制数,计算中:8位、16位、32位、64位、例:1010 0101B,1001,0011,1111,0000B 书写时,每4位用空格或逗号分隔;但源程序中不能!,加:1011 1001+0111 1001 10011 0010,
4、减:1011 1001-0111 0110 0100 0011不够减问题?,11,被乘数左移法 10111001 01111001 10111001 10111001 10111001 10111001+10111001 0101011101110001,二进制数乘法运算,12,二进制数除法运算,除数右移法 0000000100110100100110101011100101011010-10011010 11111010-10011010 11000001-10011010 10011110-10011010 010010,加减乘除人工计算方法硬件方法编程方法有小数点?,13,1.1.2 十
5、六进制数,源程序中采用,实际上也是二进制4位二进制=1位十六进制,09、AF例:0ABH=1010 1011B,0=0000B 8=1000B1=0001B 9=1001B2=0010B A=1010B3=0011B B=1011B4=0100B C=1100B5=0101B D=1101B6=0110B E=1110B7=0111B F=1111B必须熟记!,加减:参照二/十进制 列竖式 乘除:转换为二进制 用二进制运算 转换为十六进制,14,1.1.3 十进制与二/十六进制转换,十进制二进制整数部分:除2取余法(已知X求Xn-1,X2X1X0)小数部分:乘2取整法(已知X求X-1X-2X1
6、-mX-m),十进制十六进制:1、先二进制,再十六进制2、整数部分:除16取余法 小数部分:乘16取整法,二进制/十六进制十进制:(已知Xn-1,X2X1X0 X-1X-2X1-mX-m求X)整数小数部分:按幂展开,15,十进制转二进制举例,整数:除2取余100 500=B0 250=B1 121=B2 60=B3 30=B4 11=B5 01=B6100=0110 0100B,小数:乘2取整 0.568B-1=1.136B-2=0.272B-3=0.544B-4=1.088B-5=0.176B-6=0.352B-7=0.704B-8=1.4080.568=0.1001 0001B可能无法完全
7、精确转换,16,1.2 无符号数和带符号数,计算机中同一个数可表示不同的实际值同一个实际值在计算机中有不同形式表示机器数:计算机中的二进制,十六进制真值:机器数所表示的实际数值,十进制,机器数:无符号数、带符号数带符号数:原码、反码、补码属于定点数,整数是定点数的特例计算机中数的表示和计算还有浮点数,17,1.2.1 无符号数,8位、16位、32位、,每位都是数值位8位:0000 0000B1111 1111B 0 25516位:0000H0FFFFH 0 65535,18,1.2.2 带符号数、原码,8位、16位、32位、,最高位是符号位,0=正,1=负其余每位都是数值位原码:低7位是表示绝
8、对值1111 1111B 0FFH-1271000 0000B 80H-00000 0000B 00H+00111 1111B 7FH+127,19,反码,正数:与原码相同;负数:对应正数的原码每位取反1000 0000B 80H-1271111 1111B 0FFH-00000 0000B 00H+00111 1111B 7FH+127,20,补码,正数:与原码相同;负数:对应正数的原码每位取反+1,(反码+1)1000 0000B 80H-1281111 1111B 0FFH-10000 0000B 00H 00111 1111B 7FH+127,21,8位机器数与真值关系图,00H,7F
9、H,80H,FFH,真值,机器数,-128,127,255,-1,-127,无原反补,无,原,补,反,0,128,模:28,22,1.2.3 真值与机器数转换,人工计算:真值转换为机器数;机器转换为真值。从机器数的定义分析,分三种情况讨论:1.无符号数与真值的转换2.正数真值与原码、反码、补码转换3.负数真值与原码、反码、补码转换,23,1.无符号数与真值转换,真值无符号机器数:除2取余法,不足的位数补0例:2001100 1000B0C8H无符号机器数真值:按幂展开,例:1101 0000B(0D0H)128+64+16=208,24,2.正数真值与原反补转换,与无符号差别仅最高位必须=0,
10、转换方法与无符号数的方法相同。正数真值原、反、补码机器数:除2取余法,结果最高位必须为0!例:1200111 1000B78H原、反、补码机器数真值:按幂展开,例:0110 1010B(6AH)64+32+8+2=106,25,3.负数真值与原反补转换,真值机器数:先转为原码反码补码。负数真值原码:将绝对值除2取余,最高位写1负数真值反码:原码数值位取反,符号位不变负数真值补码:在反码最低位上加1例:-1201111 1000B1000 0111B1000 1000B机器数真值:机器数的最高位为1原码真值:数值位按幂展开,加负号反码真值:数值位每位取反后按幂展开,加负号补码真值:数值位取反加1
11、,按幂展开,加负号对任意二进制数B,等式/(B-1)=/B+1成立.例:C8-72(原码)-56(反码)-57(补码),26,1.2.4 机器数和真值关系,同一个真值有不同的机器数表示:,同一个机器数可以表示不同的真值:,27,1.2.5 为什么用补码,1.减法转换为加法:A-B=A+(-B)2.更重要的原因是:带符号数和无符号数的加减运算规则相同,可简化CPU硬件。,求补码:真值转换为机器数,正数:十进制转为二进制 负数:对应正数的二进制取反加1求补:取反加1;正转为负,负转为正对任意二进制数B:0-B=2n-B=/(B-1)=/B1,28,1.3 微机基本原理,微机基本组成结构指令执行过程
12、,29,1.3.1 微机基本结构框图,CPU,存储器,I/O接口,I/O设备,AB地址总线,数据总线 DB,控制总线 CB,三条总线连接三大部件,AB位数决定存储容量,DB位数决定一次传送数据位数控制总线主要有:M/IO、/RD(读)、/WR(写),数字电子计算机,30,1.3.2 指令执行过程,冯诺依曼型计算机:存储程序计算机,一条指令的执行过程分4个步骤:取指、取数、译码操作(运算)、存数指令的执行时间问题,程序装入主存,运行,控制权交回系统。,高级语言程序由有序排列的语句组成;汇编语言程序由有序排列的指令组成。程序的运行过程就是指令执行的重复过程,31,取指、取数过程,AB送出地址;CB
13、送出M/IO、/RD;存储器从DB送 机器码或数据;CPU从DB上读入。,CPU,存储器,I/O接口,AB,DB,CB,32,存数过程,I/O接口的操作:输入、输出原理与存储器读、写相同,AB送出地址;DB送出数据;CB送出M/IO、/WR;存储器从DB读入数据,CPU,存储器,I/O接口,AB,DB,CB,33,1.4 8086CPU,CPU是微机的核心,最关键的部件。重点掌握:与汇编语言编程密切相关的内容内部寄存器及其用法标志寄存器,34,1.4.1 微处理器概述,8位:8080、8085、8088Intel 80 x86系列:向上兼容16位:8086、(80186)、8028632位:8
14、0386、80486、Pentium、,微控制器(单片机)控制应用 MCS51、PIC 8位为主DSP芯片 信号处理 TMS320 16位为主嵌入式微处理器 移动设备 ARM 32位为主通用微处理器 台式微机 Z80、80X86 32位为主,CPU微处理器,应用不同有4个分支:,35,1.4.2 8086内部结构,寄存器组,段寄存器指令指针,总线控制逻辑,指令队列,总线接口单元BIU,执行单元EU,标志寄存器,ALU,外部总线,内部总线,地址加法器,控制单元,20位地址,16位数据,元件级、门电路级、框图级,前后联系理解!,36,1.4.3 8086寄存器,AX 累加器 Accumulator
15、,BX 基址寄存器 Base,CX 计数寄存器 Count,DX 数据寄存器 Data,源变址寄存器 Source Index,目的变址寄存器 Destination Index,基址指针 Base Pointer,堆栈指针 Stack Pointer,代码段寄存器 Code Segment,数据段寄存器 Data Segment,堆栈段寄存器 Stack Segment,扩展段寄存器 Extra Segment,指令指针 Instruction Pointer,标志寄存器,数据寄存器,变址,指针,通用寄存器,段寄存器,32位:EAXEBXECXEDXESIEDIEBPESPEIPEFLAGS
16、段寄存器FSGS,16位8位 8位,PC程序计数器,控制寄存器,37,1.4.4 标志寄存器,1,0,条件标志:6个,在运算器中控制标志:3个,控制电路中,IF:中断允许标志,CPU可屏蔽中断用DF:方向标志,串操作指令用TF:跟踪(单步、陷井)标志,调试程序用,在调试软件DEBUG中用2个字母表示,38,条件标志(1),PF:奇偶标志,用于传送数据时的校验 计算结果的低8位1的个数为偶数,则PF=1 否则,PF=0,ZF:零标志,用于减运算时判断相等 逻辑运算时判断全0 计算结果为0,则ZF=1;不为0,则ZF=0,AF:辅助进位/借位标志,用于BCD码计算 加运算时D3位向D4位有进位 或
17、减运算时D3位向D4位有借位,则AF=1 否则AF=0,39,条件标志(2),CF:进位/借位标志,用于无符号数加/减运算,多字节运算的进位/借位传递 计算时最高位有进位/借位,则CF=1 否则CF=0,SF:符号标志,用于带符号数运算 计算结束为负则SF=1,为正则SF=0,OF:溢出标志,用于带符号数运算 计算结果超出带符号数的表示范围,则OF=1 否则OF=08位:-128127;16位:-3276832767,CF,CF,40,标志位判断举例(加),1111,0100+1111,0100-1,1110,1000,-12+)-12-24,244+244-488=232+256,PF=1,
18、ZF=0,AF=0,CF=1,SF=1,OF=0,1110,1000=-24,1110,1000=232,CPU运算:,分析:带符号:无符号:,带符号数的符号位也当成数值位参加计算!,41,标志位判断举例(减),1111,0100-0000,1100-0,1110,1000,-12-)+12-24,244-12-232,PF=1,ZF=0,AF=1,CF=0,SF=1,OF=0,1110,1000=-24,1110,1000=232,CPU运算:,分析:带符号:无符号:,特别注意区别CF和OF!,42,CF、OF判断举例,CF=0,SF=1,OF=1,1110,1000=-24,1110,10
19、00=232,CPU运算:,0111,0100+0111,0100-0,1110,1000,+116+)+116-+232,116+116-232,分析:带符号:无符号:,计算机中无符号数和带符号数的运算问题,43,理解机器数运算问题,标志位是加减计算结果的一部分无符号数运算看CF,带符号数运算看SF、OF编程者知道是带符号数还是无符号数CPU不知道是带符号数还是无符号数两种情况要各算一遍,提供结果给编程者按前例的分析,带符号数若用补码表示,实际上只算一遍,硬件只有一套这是带符号数用补码表示的根本原因!,44,1.4.5 判断OF三方法,OF标志最复杂、最重要,理解带符号及其计算。(难点)三种
20、方法,等效人工判断、计算机判断以加法为例,减法同理可推,45,1.按OF定义判断,被加数、加数转为真值后相加,再用真值的和判断。-128127;-3276832767这是人工的方法,计算机中不可能用!前面3个例子都是用了这种方法缺点:计算过程麻烦,容易出错,46,2.按符号位判断,被加数、加数的符号、和的符号:正+正=正:OF=0;正+正=负:OF=1负+负=负:OF=0;负+负=正:OF=1 正+负=正,负:OF=0前面的例子用这种方法判断结果一样这是人工的方法,看似繁琐,实际最简单计算机中也可用,但硬件不够简化!,47,OF的数学意义,000H,40H 64,80H-128,-64 C0H
21、,7FH127,-1FFH,机器数:00H40H7FH80HC0HFFH00H 0 64 127-128-64-1 0,左半圆正数,右半圆负数。因为ALU位数有限,计算机8位+8位=8位两个数相加实际上:从一个点顺时针走到另一个点。,48,最高位、次高位的进位:都有或都没有进位,则OF=0一个有一个没有,OF=1前面的例子用这种方法判断结果一样关键是理解符号位的特殊性是CPU中硬件采用的方法,人工也可采用。也可转化为双符号位法。,1,1111,0100+1,1111,0100 1,1110,1000,3.按最高次高位进位判断,49,1.4.6 标志位小结,人工判断标志位是为了掌握其原理,程序运
22、行时标志位是由硬件自动判断的,编程的任务是根据这些标志位做不同的处理。充分利用标志位编出高水平算法是汇编语言程序设计的重要技巧。不同CPU标志位不同,但原理完全相同!标志位是一切逻辑推理的基础!现代CPU增加了很多控制标志位,但条件标志位数量没增加,没有新的概念和原理,50,1.5 DEBUG操作(一),系统的内部命令,不必复制或安装。主要功能:显示修改寄存器值,显示修改内存单元内容单步运行程序,断点运行程序显示程序,修改部分指令命令:一个字母,后跟参数P18表1.8通过实验熟练掌握!,51,1.6 判断标志位实验,预习:人工计算和判断标志位;用ADD AL,BL,8位加,标志位;用SUB A
23、L,BL,8位减,标志位。16位加减,判断CF、SF、OF思考题前3题必做。,52,1.7 BCD码及计算,计算机只能用二进制对十进制:十进制二进制,计算后十进制有否更简单的方法表示和计算十进制数?计算机如何表示十进制数?BCD码计算机如何计算十进制数?计算后调整,53,1.7.1 BCD码,二进制编码的十进制数 真值98压缩型 1001 1000B=98H非压缩型 0000 1001 0000 1000B=0908H比较:用无/带符号二进制表示=62H机器数98H表示的真值:无符号数152,带符号(补码)数-104压缩型BCD码98,0=0000B1=0001B2=0010B3=0011B4
24、=0100B5=0101B6=0110B7=0111B8=1000B9=1001BP3表1.2,54,1.7.2 BCD码的运算,加:先按二进制加(ADD),再调整(DAA、AAA)减:先按二进制减(SUB),再调整(DAS、AAS)乘:先按二进制乘(MUL),再调整(AAM)除:先调整(AAD),再按二进制除(DIV)调整指令共有6条,见P23表1.12分别与相应的二进制运算指令配合,两条指令执行的总效果是:对BCD码运算,得的结果也是BCD码.,55,BCD码加举例,DAA 压缩型BCD码加调整AAA 非压缩型BCD码加调整跟在以AL为目的的ADD/ADC指令之后AL=45H,BL=67H
25、;必须是压缩型BCD码ADD AL,BL;AL=0ACH,CF=0,AF=0DAA;AL=12H,CF=1,AF=1AL=05H,BL=05H;必须是非压缩型BCD码ADD AL,BL;AL=0AH,CF=0,AF=0AAA;AL=00H,CF=1,AF=1,56,BCD码减举例,DAS 压缩型BCD码减调整AAS 非压缩型BCD码减调整跟在以AL为目的的SUB/SBB指令之后AL=47H,BL=65H;必须是压缩型BCD码SUB AL,BL;AL=0E2H,CF=1,AF=0DAS;AL=82H,CF=1,AF=0AL=05H,BL=09H;必须是非压缩型BCD码SUB AL,BL;AL=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 实践 教程 课件
链接地址:https://www.31ppt.com/p-3962895.html