信息与软件工程学院学院赵洋2011-2012学年第一学期电子科技大学信软学院本科教学课件汇编语言程序设计课程复习电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第1页/共34页•考核方式:闭卷考试•考试题型:1.单选题2.多选题3.填空题4.简答题5.读程序题6.写程序题(程序段和完整程序)•最后成绩评定办法:平时作业占10%,实验20%,期末考试占70%。课程考核方式和成绩构成电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第2页/共34页•1.汇编语言的一般概念•2.学习和使用汇编语言的目的•3.进位计数制及其相互转换•4.带符号数的表示及运算•5.字符的表示•6.基本逻辑运算第一章基础知识主要内容电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第3页/共34页•1.进位计数制及其相互转换–例:设有无符号数X=1101011B,Y=101Q,Z=6EH,它们之间的关系是(4)。(1)XYZ(2)XYZ(3)YXZ(4)ZXY–注意:一定要在16进制数首位为字母前加0,运算时注意是16进制运算。•2.带符号数的表示及运算–原码的表示方法、表示范围–补码的表示方法、表示范围–求补运算–例:当两个数60和70按照8位二进制数相加后,标志位CF和OF的值是(2).(1)CF=1OF=1(2)CF=0OF=1(3)CF=0OF=0(4)CF=1OF=0第一章基础知识重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第4页/共34页1.IBM-PC微机基本结构2.8086/8088寄存器结构及其用途3.8086/8088系统的存储器组织结构4.8086/8088系统的堆栈及其操作方法第二章8086/8088微机基本构成主要内容电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第5页/共34页1.CPU的功能结构–EU和BIU–流水线技术–例:在Intel8086/8088CPU中提高执行速度的主要措施是(3)(1)采用了段寄存器(2)采用了通用寄存器(3)采用了独立的EU和BIU结构(4)采用了总线结构2.8086/8088寄存器结构及其用途–寄存器的分类:通用寄存器,段寄存器,控制寄存器–数据寄存器:AX,BX,CX,DX,AH,AL,BH,BL,CH,CL,DH,DL–指针寄存器:SP,BP–变址寄存器:SI,DI–段寄存器:CS,DS,SS,ES–控制寄存器:IP,FLAGS–标志位:CF,PF,ZF,AF,SF,TF,IF,DF,OF–例:Intel8086/8088CPU的变址寄存器有DI,SI,基址寄存器有BX,BP。第二章8086/8088微机基本构成重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第6页/共34页3.8086/8088系统的存储器组织结构–物理地址20位,逻辑地址(段基值:偏移量)–以字节为单元,字单元地址由低字节单元地址表示,高字节放高地址单元,低字节放低地址单元;–逻辑段划分的基本条件:必须是小节首地址,16B-64KB;–逻辑地址与物理地址转换:物理地址=段基值*16+偏移量;–物理地址唯一,逻辑地址不唯一;–例:设三个字节存储单元的地址和内容分别为:(20020H)=32H,(20021H)=2,(20022H)=0F3H。从地址20021H中取一个字的内容是(3)。(1)2032H(2)3202H(3)0F302H(4)02F3H–例:在8086/8088系统中,可以作为逻辑段的段基址是(1,2)。(1)一个小节的开始(2)一个页面的开始(3)偶数地址(4)奇数地址第二章8086/8088微机基本构成重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第7页/共34页4.8086/8088系统的堆栈及其操作方法–堆栈按字单元进行组织,包含的存储单元的字节数为堆栈长度。–堆栈初始化:1、STACK说明;2、手动;–STACK1SEGMEMTPARASTACKDB100DUP(0)STACK1ENDS–入栈:SP(SP)-2,(SP)入栈数据–出栈:REG/MEM((SP)),SP(SP)+2–栈底的第一个字单元:(SP)-2–例:设堆栈初始化时(SS)=3100H,(SP)=40H,则堆栈底部字单元地址是(3)。(1)31040H(2)31038H(3)3103EH(4)31042H第二章8086/8088微机基本构成重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第8页/共34页1.8086/8088的各种寻址方式2.8086/8088的传送类指令3.8086/8088的基本算术类指令4.8086/8088移位指令5.8086/8088逻辑指令6.8086/8088处理器控制类指令7.8086/8088指令编码第三章寻址方式与指令系统主要内容电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第9页/共34页1.8086/8088的各种寻址方式–立即数寻址:操作数在指令代码中,立即数不能是目的操作数;–寄存器寻址:操作数来源于通用/段寄存器(CS除外);–存储器寻址:第三章寻址方式与指令系统重要知识点直接寻址寄存器间接寻址基址变址寻址基址(变址)寻址SIDIBXBP位移量BXBPSIDIEA20位物理地址ESCSDSSS×16EUBIU电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第10页/共34页–串操作寻址:在寻找源串时,隐含使用DS:[SI]作为地址指针。在寻找目的串时,隐含使用ES:[DI]作为地址指针。–串操作指令会自动修改地址指针的值:DF=0,递增;DF=1,递减。操作对象为字节增/减1,为字增/减2。–例:寄存器间接寻址方式中可使用的寄存器有(1,3,4)(1)BX(2)CX(3)DI(4)BP2.传送类指令–通用传送指令:MOV–交换指令:XCHG–标志传送指令:LAHF,SAHF,PUSHF,POPF–地址传送指令:LEA,LDS,LES–例:分别指出下列各指令有什么错误。1)MOVAL,10002)LEADI,SI第三章寻址方式与指令系统重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第11页/共34页3.算术运算类指令–ADD,ADC,INC–SUB,SBB,DEC,NEG,CMP–掌握指令的功能和对符号位的影响。注意:减法指令对借位标志的影响,若采用变减为加的运算方法,则产生的进位与CF标志结果相反。–例:设有三个字存储单元A、B和C,要求不使用指令ADD和ADC实现存储单元A内容和存储单元B内容相加,和送C存储单元4.位操作指令–逻辑运算指令:AND,TEST,OR,XOR,NOT–移位/循环移位指令:SAL,SAR,SHL,SHR,ROL,ROR,RCL,RCR–掌握指令功能和对符号位的影响(教材描述有误,除NOT指令不影响符号位,其他逻辑运算指令CF,OF为0)。注意:如果移位次数大于1必须使用CL指明移位次数。–例:指出指令SHLAX,2的错误。第三章寻址方式与指令系统重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第12页/共34页5.处理器控制指令–CLC,STC,CMC,CLD,STD,CLI,STI–NOP,HLT,WAIT,ESC,LOCK例:执行串操作指令时串地址按增量方向处理,应使用的指令是(4)(1)STD(2)STI(3)STC(4)CLD例:设(AX)=0FF60HSTCMOVDX,96XORDH,0FFHSBBAX,DX上述程序执行后,(AX)=(0),CF=(0)第三章寻址方式与指令系统重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第13页/共34页1.汇编语言语句种类及其格式2.汇编语言数据3.表达式与运算符4.常用伪指令5.程序的段结构6.从程序返回操作系统的方法第四章基本汇编语言主要内容电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第14页/共34页1.汇编语言语句种类及其格式–指令格式和伪指令格式–标识符:最多31字符,必须字母、?、@、_开头,第2个字符可以是数字,不能是保留字2.汇编语言数据–常量:二进制,十进制,十六进制,实数,字符串–常量用途:操作数,位移量,数据定义伪指令–变量:DB,DW,DD,DQ,DT–变量属性:段属性,偏移量属性,类型属性–变量的预置:注意DW和DD的预置•?表达式•地址表达式•带DUP的表达式–变量的使用:直接引用,位移量,数据定义伪指令(地址)第四章基本汇编语言重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第15页/共34页–例:为在一连续存储单元中依次存放数据41H,42H,……48H,可用的数据定义语句是(1,3)(1)DB’ABCDEFGH’(2)DW’AB’,’CD’(3)DB41H,42H,43H,44H,45H,46H,47H,48H(4)DW4142H,4344H,4546H,4748H–标号•标号的属性:段属性,偏移量属性,类型属性(NEAR,FAR)•LABEL伪指令指定类型属性3.运算符与表达式•算术运算符、移位运算符、逻辑运算符、关系运算符•数值返回运算符:SEG,OFFSET,TYPE,LENGTH,SIZE•属性修改运算符:PTR,HIGH/LOW(只能分离常量)第四章基本汇编语言重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第16页/共34页4.常用伪指令–符号定义伪指令:EQU,“=”–数据定义伪指令:DB,DW,DD,DQ,DT–属性定义伪指令:LABEL–段定义伪指令:SEGMENT/ENDS•定位类型:PAGE,PARA,DWORD,WORD,BYTE•组合类型:NONE,PUBLIC,COMMON,STACK,AT,MEMORY–段寻址伪指令:ASSUME–过程定义伪指令:PROC/ENDP–定位伪指令和当前位置计数器:ORG,$–程序结束伪指令:END第四章基本汇编语言重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第17页/共34页5.程序段结构–段名SEGMENT[定位类型][组合类型][‘类别名‘]............本段语句序列……段名ENDS–段寄存器的装入•DS,ES:MOV指令•SS:“STACK”或MOV指令•CS:END,CALL/RET(段间),JMP(段间),IRET,RESET–例:对段寄存器CS的装入方式有(2,3,4)。(1)使用MOV指令(2)使用段间转移指令(3)使用段间子程序调用指令(4)使用END伪指令第四章基本汇编语言重要知识点电子科技大学信软学院——汇编语言程序设计讲义赵洋版权所有Copyright©20112020/8/20第18页/共34页6.程序返回操作系统–用4CH功能调用返回•MOVAH,4CHINT21H–用程序段前缀PSP返回•PUSHDSMOVAX,0PUSHAX……RET–例:在8086/8088汇编语言程序设计中有几种返