您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 汇编语言程序设计实践教程
1教材:汇编语言程序设计实践教程欢迎提意见!参考书:汇编语言程序设计丁辉电子工业出版社后续课程:微机接口技术及实验是《微机原理与接口技术及实验》的一部分汇编语言程序设计实践教程teach.xmu.edu.cn汇编语言asm2005微型计算机接口技术,张弥左,机械工业出版社微机实验讲义(硬件部分)2目录第一章汇编语言程序设计基础第二章汇编语言程序设计入门第三章算术运算程序第四章代码转换程序第五章系统调用程序第六章表处理程序第七章子程序及其与主程序参数传递31、重要性2、特点3、学习方法4、考核要求引言41、重要性专业基础课:电类、工科、理科有助于微机应用水平提高计算机等级考试:三级PC机技术研究生入学考试52、特点ABC概念间关系:网状,理解困难内容多:汇编语言、微机原理、接口技术63、学习方法理解与记忆:尽快适应预习与复习:学习效率实验与习题:针对性强分4层次:习题、必做实验、选做实验、思考题教与学:教:难点、要点;目的:让学生少走弯路,提高效率;学是关键!敢问!会问!74、考核要求笔试:期末:50%笔试内容充分结合实验内容!实验:预习、操作、报告,30%平时:作业、考勤、态度、提问:20%作业、实验报告必须手写!!!8第一章汇编语言程序设计基础1.1二进制数和十六进制数1.2无符号数和带符号数1.3微机基本原理1.48086CPU1.5DEBUG操作(一)1.6判断标志位实验1.7计算机中的十进制数及其运算原理1.8BCD码运算实验91.1二进制数和十六进制数日常生活:十进制、十二进制、六十进制计算机:二进制、十六进制n位整数m位小数:Xn-1Xn-2Xn-3……X2X1X0X-1X-2……X-m+1X-m数学意义:X=Xn-1×En-1+Xn-2×En-2+Xn-3×En-3+……+X2×E2+X1×E+X0+X-1×E-1+X-2×E-2+…….+X-m+1×E-m+1+X-m×E-m(0≤Xi≤E-1)E=10、16、2、……101.1.1二进制数计算中:8位、16位、32位、64位、……例:10100101B,1001,0011,1111,0000B书写时,每4位用空格或逗号分隔;但源程序中不能!加:10111001+01111001100110010减:10111001-0111011001000011不够减问题?11被乘数左移法10111001×0111100110111001101110011011100110111001+101110010101011101110001二进制数乘法运算12二进制数除法运算除数右移法000000010011010010011010√1011100101011010-1001101011111010-1001101011000001-1001101010011110-10011010010010加减乘除人工计算方法→硬件方法→编程方法有小数点?131.1.2十六进制数源程序中采用,实际上也是二进制4位二进制=1位十六进制,0~9、A~F例:0ABH=10101011B0=0000B8=1000B1=0001B9=1001B2=0010BA=1010B3=0011BB=1011B4=0100BC=1100B5=0101BD=1101B6=0110BE=1110B7=0111BF=1111B必须熟记!加减:参照二/十进制列竖式乘除:转换为二进制用二进制运算转换为十六进制141.1.3十进制与二/十六进制转换十进制→二进制整数部分:除2取余法(已知X求Xn-1,…X2X1X0)小数部分:乘2取整法(已知X求X-1X-2…X1-mX-m)十进制→十六进制:1、先→二进制,再→十六进制2、整数部分:除16取余法小数部分:乘16取整法二进制/十六进制→十进制:(已知Xn-1,…X2X1X0X-1X-2…X1-mX-m求X)整数小数部分:按幂展开15十进制转二进制举例整数:除2取余100│50│0=B025│0=B112│1=B26│0=B33│0=B41│1=B50│1=B6∴100=01100100B小数:乘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│.408∴0.568=0.10010001B可能无法完全精确转换161.2无符号数和带符号数计算机中同一个数可表示不同的实际值同一个实际值在计算机中有不同形式表示机器数:计算机中的二进制,十六进制真值:机器数所表示的实际数值,十进制机器数:无符号数、带符号数带符号数:原码、反码、补码属于定点数,整数是定点数的特例计算机中数的表示和计算还有浮点数171.2.1无符号数8位、16位、32位、……,每位都是数值位8位:00000000B~11111111B025516位:0000H~0FFFFH065535181.2.2带符号数、原码8位、16位、32位、……,最高位是符号位,0=正,1=负其余每位都是数值位原码:低7位是表示绝对值11111111B0FFH-12710000000B80H-000000000B00H+001111111B7FH+12719反码正数:与原码相同;负数:对应正数的原码每位取反10000000B80H-12711111111B0FFH-000000000B00H+001111111B7FH+12720补码正数:与原码相同;负数:对应正数的原码每位取反+1,(反码+1)10000000B80H-12811111111B0FFH-100000000B00H001111111B7FH+127218位机器数与真值关系图00H7FH80HFFH真值机器数-128127255-1-127无原反补无原补反0128模:28221.2.3真值与机器数转换人工计算:真值转换为机器数;机器转换为真值。从机器数的定义分析,分三种情况讨论:1.无符号数与真值的转换2.正数真值与原码、反码、补码转换3.负数真值与原码、反码、补码转换231.无符号数与真值转换真值→无符号机器数:除2取余法,不足的位数补0例:200→11001000B→0C8H无符号机器数→真值:按幂展开,例:11010000B(0D0H)→128+64+16=208242.正数真值与原反补转换∵与无符号差别仅最高位必须=0,∴转换方法与无符号数的方法相同。正数真值→原、反、补码机器数:除2取余法,结果最高位必须为0!例:120→01111000B→78H原、反、补码机器数→真值:按幂展开,例:01101010B(6AH)→64+32+8+2=106253.负数真值与原反补转换真值→机器数:先转为原码→反码→补码。负数真值→原码:将绝对值除2取余,最高位写1负数真值→反码:原码数值位取反,符号位不变负数真值→补码:在反码最低位上加1例:-120→11111000B→10000111B→10001000B机器数→真值:机器数的最高位为1原码→真值:数值位按幂展开,加负号反码→真值:数值位每位取反后按幂展开,加负号补码→真值:数值位取反加1,按幂展开,加负号对任意二进制数B,等式/(B-1)=/B+1成立.例:C8→-72(原码)→-55(反码)→-56(补码)261.2.4机器数和真值关系真值机器数12-12无符号数0000,1100带符号数原码0000,11001000,1100反码0000,11001111,0011补码0000,11001111,0100真值机器数无符号数原码反码补码0000,1111151515151111,0001241-113-14-15同一个真值有不同的机器数表示:同一个机器数可以表示不同的真值:271.2.5为什么用补码1.减法转换为加法:A-B=A+(-B)2.更重要的原因是:带符号数和无符号数的加减运算规则相同,可简化CPU硬件。求补码:真值转换为机器数,正数:十进制转为二进制负数:对应正数的二进制取反加1求补:对机器数操作,取反加1;正转为负,负转为正对任意二进制数B:0-B=2n-B=/(B-1)=/B+1281.3微机基本原理微机基本组成结构指令执行过程291.3.1微机基本结构框图CPU存储器I/O接口I/O设备AB地址总线数据总线DB控制总线CB三条总线连接三大部件AB位数决定存储容量,DB位数决定一次传送数据位数控制总线主要有:M/IO、/RD(读)、/WR(写)数字电子计算机301.3.2指令执行过程冯诺依曼型计算机:存储程序计算机一条指令的执行过程分4个步骤:取指、取数、译码操作(运算)、存数指令的执行时间问题程序装入主存,运行,控制权交回系统。高级语言程序由有序排列的语句组成;汇编语言程序由有序排列的指令组成。程序的运行过程就是指令执行的重复过程31取指、取数过程①AB送出地址;②CB送出M/IO、/RD;③存储器从DB送机器码或数据;④CPU从DB上读入。CPU存储器I/O接口ABDBCB①②③④32存数过程I/O接口的操作:输入、输出原理与存储器读、写相同AB送出地址;DB送出数据;CB送出M/IO、/WR;存储器从DB读入数据CPU存储器I/O接口ABDBCB①②③④331.48086CPUCPU是微机的核心,最关键的部件。重点掌握:与汇编语言编程密切相关的内容内部寄存器及其用法标志寄存器341.4.1微处理器概述8位:8080、8085、8088Intel80x86系列:向上兼容16位:8086、(80186)、8028632位:80386、80486、Pentium、……微控制器(单片机)控制应用MCS51、PIC8位为主DSP芯片信号处理TMS32016位为主嵌入式微处理器移动设备ARM32位为主通用微处理器台式微机Z80、80X8632位为主CPU→微处理器,应用不同有4个分支:351.4.28086内部结构寄存器组段寄存器指令指针总线控制逻辑指令队列总线接口单元BIU执行单元EU标志寄存器ALU外部总线内部总线地址加法器控制单元20位地址16位数据元件级、门电路级、框图级前后联系理解!ABDBCB361.4.38086寄存器AHALBHBLCHCLDHDLSIDIBPSPAX累加器AccumulatorBX基址寄存器BaseCX计数寄存器CountDX数据寄存器DataCSDSSSESIPFLAGS源变址寄存器SourceIndex目的变址寄存器DestinationIndex基址指针BasePointer堆栈指针StackPointer代码段寄存器CodeSegment数据段寄存器DataSegment堆栈段寄存器StackSegment扩展段寄存器ExtraSegment指令指针InstructionPointer标志寄存器数据寄存器变址指针通用寄存器段寄存器32位:EAXEBXECXEDXESIEDIEBPESPEIPEFLAGS段寄存器FSGS16位8位8位PC程序计数器控制寄存器371.4.4标志寄存器15~1211109876543210OFDFIFTFSFZFAFPFCFOVDNEINGZRACPECYNVUPDIPLNZNAPONC10条件标志:6个,在运算器中控制标志:3个,控制电路中IF:中断允许标志,CPU可屏蔽中断用DF:方向标志,串操作指令用TF:跟踪(单步、陷井)标志,调试程序用在调试软件DEBUG中用2个字母表示38条件标志(1)PF:奇偶标志,用于传送数据时的校验计算结果的低8位1的个数为偶数,则PF=1否则,PF=0ZF:零标志,用于减运算时判断相等逻辑运算时判断全0计算结果为0,则ZF=1;不为0,则ZF=0AF:辅助进位/借位标志,用于BCD码计算加运算时D3位向D4位有进位或减运算时D3位向D4位有借位,则AF=1否则AF=039条件标志(2)CF:进位/借位标志,用于无符号数加/减运算,多字节运算的进位/借位传递计算时最高位有进位/借位,则CF=1否则CF=0SF:符号标志,用于带符号数运算计算结束为负则SF=1,为正则SF=0OF:
本文标题:汇编语言程序设计实践教程
链接地址:https://www.777doc.com/doc-4094462 .html