您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 第1章 汇编语言基础知识(一)
1教学重点第1章是用汇编语言进行程序设计所需要了解的基本知识。在课堂上,我们重点掌握几个内容:PC机软硬件系统认识汇编语言基础是熟悉寄存器组难点是各种寻址方式21.1计算机系统概述硬件(Hardware)中央处理单元CPU控制器、运算器、寄存器存储器主存储器:RAM和ROM辅助存储器:磁盘、光盘、U盘外部设备输入设备和输出设备软件(Software)系统软件应用软件3微型计算机的系统组成I/O接口主存储器系统总线CPU寄存器控制器运算器辅助存储器输入设备输出设备4汇编语言程序员看到的硬件中央处理单元CPU(Intel80x86)对汇编语言程序员,最关心其中的寄存器存储器(主存储器)呈现给汇编语言程序员的,是存储器地址外部设备(接口电路)汇编语言程序员看到的是端口(I/O地址)5寄存器(Register)寄存器是CPU内部的高速存储单元它们为处理器提供各种操作所需要的数据或地址等信息汇编语言程序采用它们各自的符号名16位Intel8086/80286CPU中有AXBXCXDXSIDIBPSP32位80386/80486/Pentium系列CPU中有EAXEBXECXEDXESIEDIEBPESP6存储器地址(Address)存储器是由大量存储单元组成,需要用编号区别每个单元:编号=地址存储器地址是存储器中存储单元的编号每个存储单元存放一个字节量的数据一个字节B(Byte)=8个二进制位b(bit)采用十六进制数来表达地址Intel8086具有1兆字节(1MB)存储器容量存储器地址表示为:00000H~FFFFFH其中大写H(或小写h)表示是十六进制数7端口(Port)I/O接口电路由接口寄存器组成,需要用编号区别各个寄存器:编号=地址I/O地址是接口电路中寄存器的编号端口是I/O地址的通俗说法系统通过这些端口与外设进行通信采用十六进制数来表达端口Intel8086支持64K个8位端口I/O地址可以表示为:0000H~FFFFH8计算机的程序设计语言机器语言(MachineLanguage)B86400050001汇编语言(AssemblyLanguage)movax,100;取得一个数据100(MOV是传送指令)addax,256;实现100+256(ADD是加法指令)高级语言(High-levelLanguage)100+2569什么是汇编语言以助记符形式表示计算机指令助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号助记符是表明指令功能的英语单词或其缩写汇编格式指令以及使用它们编写程序的规则就形成汇编语言(AssemblyLanguage)汇编语言程序:用汇编语言书写的程序汇编程序:将汇编语言程序“汇编”成机器代码目标模块的程序汇编语言程序与汇编程序是两个概念10汇编语言和高级语言的比较-1汇编语言与处理器密切相关↘汇编语言程序的通用性、可移植性较差高级语言与具体计算机无关↗高级语言程序是标准化语言,可在多种计算机上编译后执行汇编语言:×高级语言:√11汇编语言和高级语言的比较-2汇编语言功能有限、涉及硬件细节↘程序编写比较繁琐,调试比较困难高级语言提供了强大的功能,不必关心琐碎问题↗类似自然语言的语法,易于掌握和应用汇编语言:×高级语言:√12汇编语言和高级语言的比较-3汇编语言本质上就是机器语言↗可以直接、有效地控制计算机硬件↗易于产生速度快、容量小的高效率目标程序高级语言不针对具体计算机系统↘不易直接控制计算机的各种操作↘目标程序比较庞大、运行速度较慢汇编语言:√高级语言:×13汇编语言的特点汇编语言的优点:直接控制计算机硬件部件编写“时间”和“空间”两方面最有效程序汇编语言的缺点:与处理器密切有关需要熟悉计算机硬件系统、考虑许多细节编写繁琐,调试、维护、交流和移植困难汇编语言:?高级语言:?14汇编语言和高级语言的混合编程汇编语言的优点使得它在程序设计中占有重要的位置,不可被取代汇编语言的缺点使得人们主要采用高级语言进行程序开发工作有时需要采用高级语言和汇编语言混合编程,互相取长补短,更好地解决实际问题混合编程取长补短15汇编语言的应用场合程序要具有较快的执行时间,或者只能占用较小的存储容量程序与计算机硬件密切相关,程序要直接、有效地控制硬件大型软件需要提高性能、优化处理的部分没有合适的高级语言、或只能采用汇编语言的时候分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等汇编语言的作用实在不小!161.2数据表示1.2.1数制进制数制间的转换数制的运算1.2.2编码BCD码ASCII码1.2.3有符号数的表示法有符号整数的补码表示171.2.1计算机的数制(1)数制的概念:数的表示规则例:十进制逢十进一(2)数码:数字符例:0,1,2,7(3)基数Radix(用R表示):一种计数制包含的数字符号的个数例:十进制的基数10(4)位权值:位值,每个数字所处的位置不同,所代表的意义也不同(位权是10的整次幂)(5)按权展开式例:1995.121=1×103+9×102+9×101+5×100+1×10-1+2×10-2+1×10-31.概念——从十进制谈起(一)进制18在R进制中,具有R个数字符号,它们是0,1,2,…R-1)。在R进制中,由低位向高位按“逢R进一”的规则进行计数。计数制基数数码进位关系二进制B20、1逢二进一八进制O80、1、2、3、4、5、6、7逢八进一十进制D100、1、2、3、4、5、6、7、8、9逢十进一十六进制H160、1、2、3、4、5、6、7、8、9A、B、C、D、E、F逢十六进一2.R进制的性质3.计算机中常用的进位计数制19(1)在数字后面加写相应的英文字母作为标识。如:二进制数的100可写成100B十六进制数100可写成100H4.计数制的书写规则(2)在括号外面加数字下标。如:(1011)2表示二进制数的1011(2DF2)16表示十六进制数的2DF2100=???20(二)数制间的转换二八十六十211、二、八、十六进制→十进制(1010101)2=1×26+0×25+1×24+0×23+1×22+0×21+1×20=64+16+4+1=(85)10方法:各位二(八、十六)进制数码乘以与其对应的权之和。(16A.B)16=(1×162+6×161+10×160+11×16-1)10=(256+96+10+0.69)10=(362.69)10(34.6)8=?222、十→二;十→八;十→十六192924222120余1余1余0余0余1(高位)(低位)故:(19)10=(10011)2例1.将(19)10转换为二进制数。A.纯整数部分的转换法则:整数部分:除二逆序取余法小数部分:乘二正序取整法23B.纯小数部分的转换0.500×21.000(低位)0.250×20.125(高位)×2故:(0.125)10=(0.001)2例2.将(0.125)10转换为二进制数。24注意:并非所有的十进制小数都能用有限位的二进制小数来表示。例4.将(0.63)10转换为二进制。0.63×21.26×20.52×21.04×20.08(高位)(低位)原因:小数部分乘以2会无限循环下去(0.63)10=(0.1010)2253、非十进制间的转换(1)二进制到八进制之间的转换方法:以小数点为中心,向左右两边每3位分组,不足3位补“0”,将每组转换为相应的八进制数(011110111.100010100)2=(367.424)8367.424(16.327)8=(001110.011010111)2=(1110.011010111)2(11110111.1000101)226(2)二进制到十六进制间的转换(111001011010.10111001)2E5A.B9=(E5A.B9)16(4C.2E)16=(01001100.00101110)24C2E=(1001100.0010111)227(3)八进制、十六进制到二进制方法:将每一位数码转化为代表相应十进制数值的3位或4位二进制数,去掉多余的“0”(4)八进制到十六进制、十六进制到八进制方法:八进制二进制十六进制;十六进制二进制八进制。28(三)数制的运算1、R进制数的加减运算类似十进制如十六进制逢16进位1,借1当1623D9H+94BEH=B897HA59FH-62B8H=42E7H2、二进制的逻辑运算——按位操作AND、OR、NOT、XOR等如教材表:1.5291.2.2编码编码——数字化(计算机表示处理)如,学生——学号BCD码(BinaryCodedDecimal)ASCII码(美国标准信息交换码)30BCD码(BinaryCodedDecimal)二进制编码的十进制数编码方法:用四位二进制数表示一位十进制数。010123222120各位权依次为8,4,2,1,又称为8421码。531BCD码(BinaryCodedDecimal)压缩BCD码:一个字节表达两位BCD码86D=10000110B非压缩BCD码:一个字节表达一位BCD码(低4位表达数值,高4位常设置为0)86D=0000100000000110BBCD码很直观BCD码:0100100101111000.000101001001十进制真值:4978.14932ASCII码(美国标准信息交换码)标准ASCII码用7位二进制编码,有128个不可显示的控制字符前32个和最后一个编码回车CR:0DH换行LF:0AH响铃BEL:07H可显示和打印的字符:20H后的94个编码数码0~9:30H~39H大写字母A~Z:41H~5AH小写字母a~z:61H~7AH空格:20H扩展ASCII码:最高D7位为17654321033ASCII编码表341.2.3有符号数的表示法真值和机器数补码——详见组成原理!跳过35真值和机器数真值:现实中真实的数值机器数:计算机中用0和1数码组合表达的数值无符号数:只表达0和正整数的定点整数有符号数:表达负整数、0和正整数的定点整数符号位需要占用一个位常用机器数的最高位0表示正数、1表示负数定点数:固定小数点的位置表达数值的机器数定点整数:将小数点固定在机器数的最右侧表达的整数定点小数:将小数点固定在机器数的最左侧表达的小数浮点数:小数点浮动表达的实数36补码有符号整数在计算机中默认采用补码最高位表示符号:正数用0,负数用1正数补码:直接表示数值大小(同无符号数)负数补码:将对应正数补码取反加1[105]补码=01101001B[-105]补码=[01101001B]取反+1=10010110B+1=10010111B8位二进制补码表示的数值范围:-128~+12716位二进制补码表示的数值范围:-215~+215-132位二进制补码表示的数值范围:-231~+231-1N位二进制补码表示的数值范围:-2N-1~+2N-1-1N位二进制无符号数表示的数值范围:0~2N-1演示为什么是补码37负数求补负数真值“取反加1”得机器数补码负数补码“取反加1”得到负数真值补码:11100000B真值:-([11100000]求反+1)=-(00011111+1)=-00100000=-25=-32负数求补运算,等效于用带借位的0作减法真值:-8,补码:[-8]补码=00H-08H=F8H补码:11111000,真值:-(00H-F8H)=-08H=-8演示用十六进制表达和运算,方便!381.3Intel80x86系列微处理器8038680486奔腾奔腾II奔腾4802868086奔腾IIIIA-64(安腾)4004不是我不明白,这世界变化太快。扎扎实实掌握知识,以不变应万变!IA-3239808616位结构的微处理器:数据总线为16位主存容量1MB:地址总
本文标题:第1章 汇编语言基础知识(一)
链接地址:https://www.777doc.com/doc-3209058 .html