《计算机组成原理》_第1页
《计算机组成原理》_第2页
《计算机组成原理》_第3页
《计算机组成原理》_第4页
《计算机组成原理》_第5页
已阅读5页,还剩365页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电大清水县工作 张世80X86808680X8680868086软盘、硬盘和CD-ROM第1第1第1 子数字计算机:“埃尼阿克”(ENIAC,即ElectronicNumericalIntegratorandCalculator,电子数字积分计算机)。40万美元。采用18000只电子管,70000个电阻,10000支电ENIAC的不足:运算速度慢、存储容量小、全部指令没19466月,美籍匈牙利科学家冯·诺依曼(Johe指令和数据存储在计算机内部存储器中,能自动依次执行第四代(1971年-):大规模和超大规模集成电路计算机大的集成度越来越高。Intel公司推出了微处理器,诞生了微型计计算机网络阶段(1991年至今今后计算机应用的主流是计算机与通信相结合的网络神经网络计算机:建立在人工神经网络研究的基础上,从内部基本结构来模拟人脑的神经系统。用简单的数据处理单元模拟人脑的神经元,并利用神经元节点的分布生物计算机:使用由生物工程技术产生的蛋白分子为材料的“生物芯片”,不仅具有巨大的存储能力,而且能以波的形式传播信息。由于它具备生物体的某些机能,所光子计算机:用光子代替电子,用光互连代替导线互信息化就是全面发展和利用现代信息技术,借以提高人类社会的生产、工作、学习、生活等诸方面的效率和创造能计算精度高:普通微型计算机的计算精度已达具有“记忆”和逻辑判断功能:“记忆”功能指的是计算机能够存储大量信息,供用户随时检索和查询。逻辑判断功能指的是计算机不仅能够进行算术运算,还能进行逻辑运算和实践推理。记忆功能、算术运算和逻辑运算相结合,使得计算机能够模仿人类的某些智能活动,成为人类脑力延伸的主要工具,所以计算机又称 2个人计算机:面向个人或家庭使用的低档微型计算工作站:介于PC小型计算机:结构简单、成本较低、易维护和使用。主机:具有大容量存储器,多种类型的I/O通道,能同时支持批处理和分时处理等多种工作方式。其规模和小巨型计算机:也称为桌上型超级计算机。最大的特巨型计算机:也称为超级计算机。具有极高的性能和科学计算:也称为数值计算,是指用计算机来解决科学研数据处理:数据处理也称为信息处理,是人们利用计算机对所获取的信息进行采集、记录、整理、加工、存储和传过程控制:过程控制是用传感器在现场采集受控对象的数据,通过比较器求出与设定数据的偏差,由计算机按控制模型进行计算,产生相应的控制信号,驱动伺服装置对受计算机辅助系统:是采用计算机进行各种辅助功能的系人工智能:是用计算机执行某些与人的智能活动有关的复杂功能,模拟人类的某些智力活动,如图形和声音的识输入设备:用于输入原始信息和处理信息的程序。如键输出设备:用来输出计算机的处理结果及程序清单。如存储器:用来存放程序和数据。在控制器的控制下,可运算器:用来对信息及数据进行处理和计算。也称为算术逻辑部件ALU(ArithmeticandLogicUnit)。控制器:是整个计算机的指挥中心,用来指挥计算机各把事先编制好的由计算机指令组成的程序存放到存储器内,计算机在运算时依次取出指令,根据指令程序在执行前先装入内存储器,CPU负责从内存中逐条取出指令,分析识别指令,最后执行指令,从取指令—分析指令—将传统计算机的运算器和控制器集成在一块大规模集成电(Microprocessor)按照计算机CPU、字长和功能划分,经历了5第一代(1971年~1973年):4位和8第二代(1974年~1978年):8第三代(1978年~1980年):16第四代(1981年~1992年):32第五代(1993年以后):有4位、8位、16位、32位、64

硬件的基本功能是接受计算机程序,并在程序软件系统基本功能保证计算机硬件的功能得以计算机的硬件和软件二者缺一不可,否则不能I/O中央处理单元CPU(ControlProcessingUnit)是微随机存储器RAM(RandomAccessMemory)只读存储器ROM(ReadOnlyMemory)系统总线是CPU与其他部件之间传送数据、地址和控制数据总线DB(DataBus):用于CPU与主存储器、地址总线AB(AddressBus):用于CPU访问主存储器和控制总线CB(ControlBus):用于传送CPU对主存储器输入/输出接口电路也称为I/O(Input/Output)电路,即通常所说的适配器、适配卡或接口卡。它是微型计算机外磁盘存储器由磁盘、磁盘驱动器和驱动器接口电路组办公自动化:简称为OA(OfficeAutomation)。它是生产自动化:包括计算机辅助设计、计算机辅助制造远程教育:远程教育是建立在互联网上的一种教学环境。它以现代化的信息技术为手段,以适合远程传输和交互第2章第2章第2章 任何一种数制表示的数都可以写成按位权展开的多项式之式中:n——十六进制数100可写成如:(1011)2表示二进制数的(2DF2)16表示十六进制数的采用基数8或基数16组,不足3位数的补0,然后将每组用1将每位八进制数用3将每位十六进制数用4【例2.1】将十进制整数(105)10转换为二进制整2︳2︳52 余数为2︳26 余数为2︳13 余数为2︳6 余数为2︳3 余数为2︳1 余数为 余数为所以 取整数位 取整数位 取整数位 如果出现乘积的小数部分一直不为“0”16︳16︳146 余数为11(十六进制数为16︳9 余数为 余数为所以正数的补码与其原码相同,负数的补码为其反码在最低位加1【例2.15】(1)X=+1011011,求其原码、补码。 (2)Y=-1011011, 则:8位二进制补码表示的整数范围是-128~+12716位二进制补码表示的整数范围是-32768~+32767在计算机内部表示二进制数的方法称为数值编码,把一个数及其符号在机器中的表示加以数值化,称为机器数。机器数所代表的字长为8位,无符号整数的最大值是(11111111)B=(255)在算术运算中,数据是有正有负的,将这类数据称为为了在计算机中正确地表示带符号数,通常规定每个一种规定小数点的位置固定不变,这时的机器数称为正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就【例2.13】当机器字长为8 [X]原码 16【例2.14】当机器字长为8[X]原码[Y]原码 负数的反码与负数的原码有很大的区别,反码通常用作正数的补码与其原码相同,负数的补码为其反码在最低位加1【例2.15】 (2)(1)根据定义有:[X]原码 [X]补码 [Y]反码补码表示的整数范围是-2n-1~+(2n-1-1),其中n为 ASCII(AmericanStandardCodeforInformationInterchange)码34105232BCD(Binary-CodedDecimal)码又称为“二—十进制编每一位数采用4位二进制数来表示,即一个字节表示2位十进制数。例如:二进制数10001001B,采用压缩BCD码表示为十每一位数采用8位二进制数来表示,即一个字节表示1位十

计算机处理汉字信息的前提条件是对每个汉字进行编系统工作时,汉字信息在系统的各部分之间传送,它到达某个部分就要用该部分所规定的汉字代码表示汉字。因此,汉字信息在系统内传送的过程就是汉字代码转换的过汉字交换码是汉字信息处理系统之间或通信系统之间传输信息GB2312-80)。共收录汉字和图形符号7445个。其中:一将GB2312-80全部字符集组成一个94×94的方阵,每一行称为一个“区”,编号从01~94;每一列称为一个“位”,编号也是从01~94。这样,每一个字符便具有一个区码第380X868086808680286、80386、8048616时钟频率为5MHz~10MHz,基本指令执行时间为16根数据线和20根地址线,可寻址的地址空间达线制辑ALU数据总线(16位执行指令所需的数据,都由EU向BIU发出命令,对存储器

指针和变址寄存器包括指针寄存器SP、BPSI、DI,都是16表3.1变量移位,循字乘,字除,数据串操作指数据串操作指指令指针寄存器IP:是一个16位的寄存器,存放EU要执标志寄存器F:是一个16位的寄存器,共9个标志,其中6CFPFAFDF(1)代码段寄存器 (2)数据段寄存器(3)堆栈段寄存器 (4)附加段寄存器ADADADADADADADADADAD0

V(VA17/S4BHE/S DT/R(S1)DEN(S0)存储器是按字节进行组织的,两个相邻的字节被称为一个“字”。存放的信息若是以字节(8位)为单位的,将在存储器中按顺序排列存放;若存放的数据为一个字(16位)时,则将每一个字的低字节(低8位)存放在低地址库。低位库固定与8086CPU的低位字节数据线D7~D0相连,因此又可称它为低字节存储体,该存储体中的每个地址均为偶地址。高位库与8086CPU的高位字节数据线D15~D8相连,因此又称它为高字节存储体,该存储体中的(位(位8086逻辑段1逻辑段2逻辑段3逻辑段43-10

逻辑段逻辑段逻辑段逻辑段

图3-128284A地址1.80286(24种

INTR

80286灵活的32位微处理器,提供32提供3232Mbps具有实地址方式、保护方式和虚拟8086在目标码一级与8086、80286

分页虚拟存储管理和80387完全的32复 虚拟8086信虚拟8086修改CR0

第4章8086第4章8086 8086 机器指令:指挥计算机完成某 从计算机组成的层次结构来OPD 4.2.3I/O 立即寻址方式中,指令操作码和操作数都在【例4.1【例2.5】MOVAX该例中源操作数为立即寻址方式,立即数 寄存器寻址方式的操作数在指令指 汇编格式:R 其中R表示寄存器 功能:操作数直接存放在寄存器R【例4.2下列程序执行后MOVMOVADD令AX、BX皆为目的操作数地址,为寄存器寻址方式。第三条指令中,AX为目的操作数地址,BX为源操作数地址。源地址②段寄存器名:[EA]功能:指令下一字单元的内容是操作数的【例4.3【例4.3】寄存器和存储器内容为:(AX2000H(DS)=3000H(32000H执行指令:MOVAX 功能:操作数存放在存储器,寄存例如:MOV若(DS)=2000H,(BX)=1000H,物理地址=20000H+1000H=21000H。指令执行前,(AX)=2030H,(21000H)=0A0H,(21001H)=50H,指令执行后,(AX)=50A0H,(21000H)=0A0H,(21001H)=50H数据段数据段物理地址

[BX]BX作间址寄存器。 执行指令:MOVAX执行后:(AX)=?,(BP)=?,(SS)=?,寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址寄存器)名和一个8位或16汇编格式:X[R](X表示位移量,是8位或功能:操作数存放在存储器,寄存器R【例4.5 执行后:(AX)(BX)功能:操作数存放在存储器,BR的内容加IR的内【例4.6例如MOV 若指令执行前,=0010H,(SI)=0002H,(10012H)=则EA=(BX)+(SI)=0012H,PA=按前述规定:若选用BP作间址基址寄存器、变的物理地址PA由堆栈段寄存器SS的内容左移4位与偏数的物理地址PA由数据段寄存器DS的内容左移4位与【例4.7 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别PA1=(DS)左移4位PA2=(SS)左移4位问。I/O端口寻址只用于这两种指令中。寻址方式有如下两1.在指令中直接给出端口地址,端口地址一般采用2位十六进制数,也可以用符号表示,这种寻址方式为直接端口寻址。因此,直接端口寻址可访问的端口数为0~255例如:IN2.如果访问的端口地址值大于255,则必须用I/O端口的间接寻址方式。所谓间接寻址,是指把I/O端口的地址先送到DX中,用DX作间接寻址寄存器,而且只能用DX寄存例如:MOV8086包括数据传送类指令、算术运算类指12341(2)PUSH语句格式:MOV功能:将源操作数传送入目的地下图4.1描述了MOV指令在传送数图4.1MOVMOVregMOVmem(reg),reg4)MOVmemMOV MOVregMOV MOVmemES2.数据交换指令语句格式:XCHG功能:将源地址与目的地址中的内容互换。即(OPD)→OPS,(OPS)→OPD【例4.9 BX,0FFFFH ;(AX) (进栈指令语句格式PUSH功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈即:①(SP)SP(OPS)出栈指令POP功能:将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针从POP指令功能可看出,该指令为PUSH指令 2.输入指令语句格式 功能 语句格式 功能 语句格式 功能 语句格式 功能 输出指令 语句格式:XLATOPS或功能:将(BX)为首址(AL)为位移量的字节存储单元中的数据送AL寄存器。即([BX+AL])3(1)(2)传送有效地址及数据段首址指令(3)传送有效地址及附加数据段指令LEA功能:主存按源地址的寻址方式计算偏MOVBX,0100HMOVSI,0210H;(SI)LEABX,1234[BX+SI] (BX语句格式:LDS功能:将主存中指定字单元数据送入指定存储器,下一字单元数语句格式:LES存器。即(OPS)→OPD,(OPS+2)标志送AH指令功能:将标志寄存器的低8位送入AH寄存即(FLAGS)7-0→AH。该指令的执行对标志AH送标志指令功能:将AH的内容送入标志寄存器的低8位,高8位不变。即(AH)→FLAGS7-标志寄存器进栈指令功能:将标志寄存器的内容压入(FLAGS)标志寄存器出栈指令功能:将栈顶内容弹出送入标志寄存器中。 POPAXORAX0100HPUSHAX1234(1)不带进位加法指令语句格式:ADDOPD,语句格式:ADC功能:将目的操作数加源操作数再加低即(OPD)+(OPS)+CFOPDAX,4652HDX,0234H;(DX)=0234HDX,0F0F0H;(DX)=0F325H(3)加1 功能:将目的操作数加1,结果送目的INC指令是一个单操作数指令,操作数如:INCBX,即(BX)+1→BX(1)语句格式:SUB(2)带借位减指令语句格式 OPD功能:目的操作数减源操作数再减即 →语句格式:DEC如:DECCX。即(CX)-1→CX减1指令DEC也一般用于对计数器和地址语句格式:NEG功能:将目的操作数的每一位求反(包括符号MOVNEG SUB NEG DEC NEG (5)语句格式 功能:目的操作数减源操作数,结果只影响标志位,不送即(OPD)-(OPS)【例4.16】比较ALCMP JBBELOW;(AL)<50,转到BELOWSUB ;(AL)>=50,(INC (1)无符号数乘法指令(2)有符号乘指令无符号数乘法指令MUL功能:若是字节数据相乘,(AL)与OPS相乘得到字数据存入AX中;若是字数据相乘,则(AX)即字节乘法:(AL)*(OPS)AX,(AX)*(OPS)BL,有符号乘指令语句格式:IMUL功能:字节乘法:(AL)*(OPS)→AX,字其他都与MULMOVAL,0B4HMOVBL,11H (1)无符号除指令(2)有符号除指令(3)语句格式:DIV 字节除法(AX)/(OPS)→AL(商)、AH(余 字除法(DX、AX)/(OPS)→AX(商)、DX(余【例4.18】写出实现无符号数0400H/0B4H运算的MOVAX,0400HMOVBL,0B4H (2)有符号除指令语句格式 字节除法:(AX)/(OPS) AL(商)、AH(余数字除法:(DX,AX)/(OPS)→ (商)、DX(余数除法指令DIV和IDIV虽然对标志的影响未定义,但可产生溢【例4.19】写出实现有符号数0400H/0B4HMOV MOV 功能:将AX中的符号位数据扩展至DXMOVDX, MOVAX, CWD;(DX)=0FFFFH(3)加法的非压缩BCD码调整指令加法的十进制调整指令AL寄存器中低4位大于9或辅助进位(AF)=1,则(AL)=(AL)+6且(AF)=1【例2.31】压缩BCD;(AL)=68H,表示压缩BCD码;(BL)=28H,表示压缩BCD码;二进制加法;十进制调整;实现压缩BCD码加法减法的十进制调整指令功能:如果(AF)=1或AL寄存器中低4位大于9,则(AL)=(AL)-6且(AF)=1;如果(AL)>=0A0H(CF)=1,则(AL)=(AL)-60H且(CF)=1。同时MOV MOV SUBAL,BL ;二进制减法:(AL)=68H- 功能:如果AL的低4位大于9或(AF) (1)求反指令(2)逻辑乘指令(3)测试指令(4)逻辑加指令(5)按位加指令 功能:将目的地址中的内容逐位取反后 语句格式:ANDOPD功能:将目的操作数和源操作数进行逻辑乘运应位。说明:逻辑乘的运算法则为:1∧1=1MOVAND语句格式:TEST功能:源地址和目的地址的内容执行按位 语句格式:OR功能:将目的操作数和源操作数进行逻辑加运说明:逻辑加的运算法则为:MOVORXOR功能:目的操作数与源操作数做按位加运算,结即(OPD)⊕(OPS→OPD说明:按位加的运算法则为;2 移位指令包括算术移位指令、逻辑移位指令和循环移位指令,分别进行左移和右移操作。这些指令均[标号:]操作符OPD,1 其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移语句格式:SALOPD,1SHLSALOPD,CL或SHL低位补入相应的0,CF的内容为最后移入语句格式:SAROPD,1或SAR BH,0F4H CL,2 BH,CL;(BH)=0FDH该例语句SARBHCL实际上完成了(BH)/4→BH的运算,所以,用SAR指令可以实现对有符号数除2n的运算(n为语句格式:SHROPD,1或SHR功能:将(OPD)向右移动CL规定的次数,最高位补入相应个数的0,CF的内容为最3语句格式:ROLOPD,1或ROL功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向左移动CL规ROROPD,1或ROR功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向右移动CL规RCLOPD1或RCL语句格式:RCROPD,1或RCR 图4.3图2.3MOVSW——功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之CMPSB——CMPSW——功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个字节(或当DF=0(SI)(DI)增量。当DF=1SCASB——SCASW——功能:AL(字节)或AX(字)中的内容与DI目的串中的一个字节(或字)存储单元中的数据相即:①字节操作:(AL)-([DI]),字操作:LODSB——LODSW——功能:将SI所指的源串中的一个字节(或字)存即:①字节操作:(SI])AL,字操作:SI,STOSB——STOSW——功能:将AL或AX中的数据送入DI所指的目的串中 即:①字节操作:(AL)DI],字操作: ②修改指针DI,使之指向串中的下一个元当DF=0时,(DI)增量)。当DF=1时,(DI)减6.重复前缀指令REPREPZREP前缀用在MOVS、STOSLODS功能:每执行一次串指令(CX)-1,直到(CX)功能:每执行一次串指令(CX)-1,并判断ZF志是否为0,只要(CX)=0或ZF=0,则重复执行结该指令一般用在CMPS、SCAS功能:每执行一次串指令(CX)-1,并判断ZF志是否为0,只要(CX)=0或ZF=1,则重复执行结1234表2.4(3)(1)(2) 【例4.27】比较无符号数大小,将较 AX, AX>=BX移到 ;若AX<BX, AX>=BX;若AX<BX,(1)循环指令(2)相等为零循环指令(3)不相等/不为零循环指令LOOP功能:(CX)-1≠0,则程序转移说明:使用LOOP指令可代替两条指DECJNE(2)相等/为零循环指令语句格式:① 短标② 功能:(CX)-1≠0且ZF=1,则(3)不相等/不为零循环指令功能:(CX)-1≠0,则程序转(4)CX为零转移指令语句格式: 短标(CX)1≠0(循环); 4.4 8086 BIOS DOS1.中断就是计算机暂时停止当前正在执行的程I。IFIF=,I则不8086的中断系统能够处理256个不同的中断源,并为每一个中断安排一个编号,范围为00H~FFH,8086CPU把存储器的00000H—003FFH共1024在段的段地址。CPU在中断源数量很多的情况下,为保证系统的运行效率,方便软件控制,一般将所有的中断源根据不同的类别划分为若干级别,称为中断优先级。确定各中断级之间的优先顺序,然后在同级内确定除法出错中断,溢出中断,INT中断的处理过程分为4步:中断请求、中断响(2)CPU则根据中断优先级的高低顺序确定对某个中断请求是否响应。对于非屏蔽中断,只要有中断请求,CPU就响应。对于可屏蔽中断请求,CPU还要看标志寄存器的IF位的状态是否为1,若为1,则响应该中断请还应。当CPU对某一中断请求予以响应后,将完成1)取中断类型号2)标志寄存器F3)当前代码段寄存器CS6)从中断向量表中取中断服务程序入口地址:(4×N)送(4×N+2)送7)中断处理是由中断服务程序来完成的。中断服务程序根据不同的中断请求,其内容各不相同。但其开始部分往往都是保护现场,即把CPU中寄存器的内容压入堆栈,中断服务程序的最后要使用中断返回指令IRET,该指令的功能是恢复IP、CS和FIBMPC系列机在只读存储器中提供了BIOS基区,又称为ROMBIOS。它为用户程序和系统程序提供主要外设的控制功能,即系统加电自检、引导装入及对键盘、磁盘、磁带、显示器、打印机、异步串行通信口等控制。计算机系统软件就是利用这些基本的设备驱动程序,完成各种功能操作。每个功能模块的入口地址都在中断矢量表中,通过软中断指令INTn可以直接调用。n=8~1FH是中断类型要完成系统功能调用,基本按如下步 此调用的功能是系统扫描键盘并等待键盘输入一个字符,有键按下时,先检查是否是Ctrl+Break键,若是则将字符的键值(ASCII码)送 例如:要在屏幕上显示“$”符号,可用以下指 3号系统功能调用的功能是将从异步串行通信口(COM1)输入一个字符(或者(4)4号系统功能调用-异步通信输出(从串口此调用的功能是系统将从异步通信口(默认为例如:现要将“$”MOVMOV (5)5号系统功能调用-打印机输出(从此调用的功能是将一个字符输出到打印机入口参数:欲打印的字符的ASCII码送入(6)6号系统功能调用-直接控制台输入输出字此调用的功能是从键盘输入一个字符,或输出一当标志ZF=0时,表示有键被按下,将字符的当标志ZF=1时,表示没有键按下,寄存器AL如果(DL)0FFH,表示输出一个字符到屏幕,将被输出字符ASCII码送到DL中。此调用与15.15.25.15.25.45.55.6汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字寄存器、存储单元、I/O端口等进行处理,同时也能直接使用CPU指令系统和指令系统提供的各种寻址方式编制出高质量的程序,这种程序不但占用内存空间ASM(Assembler)(MacroAssembler)汇编程序以汇编语言源程序文件作为输入,并由它产生通常,一个汇编源程序一般应该由3个逻辑段组成,即数据段、堆栈段和代码段。每个逻辑段以SEGMENT语句开8086宏汇编MASM使用的语句可以分成3 的一种较“宏大”[名字 操作 [操作数 [;注释名字是一个符号,它表示本条语句的符号地址。一般注意:标号和变量都具备3种属性——操作数字段是操作符的操作对象。操作符在完成相应的操作时要求有一系列的操作数。当有两个或两个以上的注释字段是以“;”开头的说明部分,可以用英文或者汇编语言每条语句的第一个字段是它的名字字段,名重点是要掌握其组成规则和它的3下面分别讨论5SHORT、THIS、HIGH和LOW。各类运算符和常数、寄存器名、标号、变在计算具有多个运算符的表达式值时,按 数据定义伪指令用来定义一个变量的类型,并将所需要的数据放入指定的存储单元中,也可以只给变量分…义新的类型属性等。这些符号可以包括汇编语言的变量段定义伪指令的用途是在汇编语言程序中定义逻辑常用的段定义伪指令有SEGMENT、ENDS和ASSUME子程序。子程序又称为过程,可以采用CALL指令来调过程 (语句系列 CALL用伪指令STRUC和ENDS把相关数据定义语句组合起结构 (数据定义语句序列结构 在编写规模较大的汇编语言源程序时,可以将整将各模块分别进行汇编,生成各自的目标程序,为了进行模块之间连接和实现相互的符号访问,程序计数器字符“$”在8086宏汇编中具有一种特殊的意义,把在程序中,“$”出现在表达式里,它的值为程序下利用ORG目前8086汇编语言程序一般多在IBMPC/XT及其主要是指支持汇编语言程序运行和帮助建立汇编DOS编辑程序宏汇编程序连接程序调试程序用汇编程序MASM.EXE用机器码表示的目标程序文件,其扩展名为本节中给出的程序是从键盘输入10个字符,然后以与键入相反的顺序将10个字符输出到显示汇编完毕程序正确,则可调用LINK进行连接, 本章详细讲述汇编语言程序设计的基本步骤,通过实例分析说明程序的基本结构,按照程序设计的基本步骤设计各种结构程序的方6.1汇编语言程序设计基本方法和基本6.26.36.46.5 步步 6.7. 所谓结构化程序设计是指程序的设计、编写和测试都采用一种规定的组织形式进行,而不是想怎么写就怎么写。这样,可使编制的程序结构清晰,易于读懂,易于调试和修改,充分显示出模块化程序设计的优 提出并证明的结构定理:即任何程序都可以由3种基本结构程序构成结构化程序,这3种结构是:顺序结构、分支(条件选择)结构和循环结构。每一个结构只有一个入口和一 1 流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特【例6.1】试编写一程序计算以下表达式设x、y、z、v的值存放在字变量图 2 SEGMENT 200 ASSUME ;(V) ;(DX:AX)-(BX ;余数 ENDS;退出DOS 【例6.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量 SEGMENT 200 83,56,32,66,78。ASSUME DS 6.3.16.3.2 8086/8088指令系统具有许多种条件转移指令,这就说明8086/8088计算机系统具有很强的逻辑判断能力,并且能够根据这种逻辑判断选择执行不同的程序段。也就是说,当条件满足时进行某种处理,当条件不满足 ASSUMETESTAL,80H;测试ALJZ ;为正,转NEG MOVRESULT,ALMOVINT21H;返回 2 多分支结构是有若干个条件,每一个条件对应一个基本操作。分支程序就是判断产生的条件,哪个条件成立,就执行哪个条件对应操作的程序段。也就是说,从若干分支中选择 多分支结构实现的方法有:条件选择 0-1 设输入数据为X、输出数据Y,且皆为字节变量。程序流程图如下图所 XDB-YDB START:MOVMOV

MOV ;X;Al中内容和0;大于等于0,转;否则为负数,;Al中内容是否为0,;否则为大于;转到结束;;;;【例6.5】试编一程序,求三个带符号字数据中的最大值,并将最大值存入 SEGMENTDB200 DW DW DW DW ASSUME ASSUME MOV转 把转移到各分支程序段的转移指令依次放在一张表中,这张表称为转移表。把离表首单元的偏移量作为条件来判断各分支转移指令在表中的位置。当进行多分支条件判断时,把当前的条件—偏移量加上表首地址作为转移地址,转移到表中的相应位置,继续执行无条件转移指令,达到多分支的目【例6.6】设某程序有8路分支,试根据 DW DB DB200 ASSUMEDS:DATA,SS:STACK,START:MOVMOVMOV ADDMOVMOV 上述程序中的无条件转移指令的转移地址采用的是变址寻址。同理,转移地址也可以用寄存器间接寻址或基址加变址寻址,读者可自行考6.4.16.4.2【例6.7】已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正 显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。其程序流程图如下图所6.8】编写程序完成求12为止。统计被累加的自然数的个数送CN单元,累加和送SUM。流程图如下图所 SUMDW DW ASSUME MOVMOV MOV MOVADD CMP JBE MOVMOV MOVINT END 次对相邻两个数进行比较,如次序对,则不交换两数位置;如次序不对则使这两个数交换位置。的数已经放到了最后;第二遍比较只需考虑剩下的(N-1)个数,即只需比较(N-2)次;第三遍只需比较(N-3)次,……整个排序过程最多需(N-1)遍。如下面的4个数即是采用冒泡排序比 3,-4,6,7,9,2,0,-8,-9,- STACKSEGNMENTDB200STACK CS:CODE,DS:DATA,SS L:ADDDEC MOV MOV END 程序运行后,BUF区中的内容如 20,9,7,6,3,2,0,-4,-8,- 序排列,只需将指令“JGEL”改为“JAE6.4.16.4.26.4.3子程序的定义和参数传6.4.4 多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编 1子程序的定义是由过程定义伪指令PROC和其中PROC表示过程定义开始,ENDP表示过程定义结束。过程名是过程入口地址的符号表【例6.10】将一个给定的二进制数按位转换元并显示。如二进制数10010011转换成字符串为‘10010011’。要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须入口参数:DXCX存放待转换数的位数(8位或16位出口参数:转换后的字符串存放在以DI作指针的字节存 DS:DATA,CS:CODE,SS BTASC;调用子程序 [DI],BYTEPTR [DI+1],BYTEPTR [DI+2],BYTEPTR [DL],BYTEPTR [DL+1],BYTEPTR [DL+2],BYTEPTR BTASC DX,,1;DX最高位移入 END 7.17.1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论