汇编语言程序设计教案课程总结powerpoint 演示文稿_第1页
汇编语言程序设计教案课程总结powerpoint 演示文稿_第2页
汇编语言程序设计教案课程总结powerpoint 演示文稿_第3页
汇编语言程序设计教案课程总结powerpoint 演示文稿_第4页
汇编语言程序设计教案课程总结powerpoint 演示文稿_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计课程总结第一部分:基础知识第二部分:指令系统第三部分:程序设计方法关于考试第一部分:基础知识各种进制转换二进制的加、减、乘、除运算 几种基本的二进制的逻辑运算 常用ASCII码,字母、数码、空格、回车换行补码及运算 数字的含义 处理器的基本知识计算机的基本知识机器语言、汇编语言、汇编语言程序、汇编程序、连接程序、调试程序通用寄存器专用寄存器 标志寄存器条件码标志段寄存器存储器地址分段基于微处理器的计算机系统构成计算机硬件:中央处理器、存储器和输入输出子系统三个主要组成部分,用系统总线将他们联系在一起。存储器:计算机的记忆部件中央处理器:包括运算器和控制器运算器:执行所有的算术和

2、逻辑运算指令;控制器:负责全机的控制工作,负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以保证正确完成程序所要求的功能。I/O子系统:包括I/O设备和大容量存储器两类外部设备I/O设备:负责与计算机外部世界通信的输入、输出设备大容量存储器:可存储大量信息的外部存储器。系统总线:把CPU、存储器和I/O设备连接起来,用来传送各部分之间的信息。(由总线控制逻辑负责指挥)数据线:传送信息地址线:指出信息来源或目的的地址控制线:规定总线的动作 80 x86寄存器组分为程序可见的寄存器和程序不可见的寄存器两大类。程序可见的寄存器:在汇编语言程序设计中用到的寄存器。程序不

3、可见的寄存器:应用程序一般不使用而由系统使用的寄存器。 通用寄存器AX (accumulator)累加器:算术运算的主要寄存器、乘/除运算指定寄存器、I/O指令指定使用寄存器;BX (Base) 基址变址寄存器:计算存储器地址时的基地址;CX (Count)计数寄存器:移位、循环和串处理指令中保存计数值;DX (Data)数据寄储器:双字长数的高位、I/O指令的端口地址;SP(Stack Point)堆栈指针寄存器:指示段顶的偏移地址;BP(Base Point)基址指针寄存器:DI(Destination index)目的变址寄存器:SI(Source index)源地址变址寄存器:专用寄存

4、器IP(instruction pointer)指令指针寄存器SP(Stack Point)堆栈指针寄存器:指示段顶的偏移地址;FLAG标志寄存器、程序状态寄存器(PSW)条件标志:溢出标志OF:符号标志SF:零标志ZF:进位标志CF:辅助进位标志AF:奇偶标志PF:其它(略)段寄存器CS代码段寄存器DS数据段寄存器SS堆栈段寄存器ES附加段寄存器 实模式存储器寻址20位物理地址由16位段地址和16位偏移地址组成20位物理地址=段地址x 16d+偏移地址 例:(DS) = 2100H, (BX) = 0500H (PA) = 21000H+0500H = 21500H同样的物理地址可以有不同的

5、段地址和偏移地址表示。指定段地址和偏移地址只能表示唯一的物理地址 第二部分:指令系统指令的组成 操作码和操作数寻址方式立即寻址寄存器寻址直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址指令系统和寻址方式计算机是通过执行指令序列来解决问题的每种计算机都有一组指令集供用户使用指令集指令系统:指令:由操作码字段和操作数字段两部分组成操作码字段:指示计算机所要执行的操作操作数字段:指出在指令执行操作中所需要的操作对象信息 寻址方式:得到操作数的方式与数据有关的寻址方式与转移地址有关的寻址方式 操作码 操作数 . 操作数与数据有关的寻址方式用来确定操作数地址从而找到操作数立即寻址 MOV

6、 AX , 3069H寄存器寻址 MOV AX , BX直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址 MOV AX , BP DI 相对基址变址 MOV AX , MASK BX SI 比例变址寻址基址比例变址寻址相对基址比例变址寻址(1) 立即寻址方式* 操作数在指令中给出操作数直接存放在指令中,作为指令的一部分存放在代码段里,该操作数又称为立即数。立即数可以是8位、16位,在80386之后可以是32位 指令格式: MOV AL , 5 ADD AL , 5MOV AL , -5 ADD AL

7、 , -5MOV AX , 3064H ADD AX , 3064HMOV AL , A ADD AL , AMOV EAX , 12345678H ADD EAX,12345678H注意:只能用于 SRC 字段 MOV 40H, AL SRC 和 DST 的字长一致 MOV AH, 3064H注意在代码段中的存放形式(高位字节和地位字节)(2) 寄存器寻址方式* 操作数在指定的寄存器中操作数在寄存器中,指令中指定寄存器号。寄存器可以是AX,BX,CX,DX,SI,DI,SP和BP。也可以是AL,AH,BL,BH,CL,CH,Dl,DH,对于80386之后可以是EAX,EBX,ECX,EDX,

8、ESI,EDI,ESP和EBP。 指令格式: MOV AX ,BXMOV AL ,CHMOV ECX , EDX注意:SRC 和 DST 的字长一致 MOV AH, BX CS 不能用 MOV 指令改变 MOV CS, AX MOV AX ,BX两个操作数都是寄存器寻址(3) 直接寻址方式* 有效地址EA由指令直接给出操作数的有效地址只包含位移量一种成分,其值就存放在代码段中指令的操作码之后。指令格式: MOV AX,2000H 假设(DS)=3000HEA=2000H DS:2000H=3000Hx16+2000H=32000H5030 32000AH AL3050(AX) = 3050H(

9、4) 寄存器间接寻址方式 操作数的有效地址在基址寄存器(BX/BP)或变址寄存器(SI/DI) 中,操作数在存储器中。指令格式: MOV AX, BX PA =(DS):(BX)MOV AX, ES:BX PA =(ES):(BX)MOV AX, BP PA = (SS):(BP)MOV ECX,EDX80386后可使用所有32通用寄存器注意:不允许使用AX、CX、DX 存放 EA。MOV AX, CXSRC 和 DST 的字长一致 MOV DL, BX ; BX指示一个字节单元MOV DX, BX ; BX指示一个字单元适于数组、字符串、表格的处理(5) 寄存器相对寻址方式*(直接变址寻址方

10、式)操作数的有效地址为基址寄存器(BX/BP)或变址寄存器(SI/DI)的内容和指令中指定的位移量之和,操作数在存储器中。指令格式: MOV AX, COUNTSI或MOV AX, COUNT+SI假设 (DS)=3000H, (SI)=2000H, COUNT=3000H,则: PA = 35000H假设(35000H)=1234H, 那么 (AX)=1234Hmov ax,bx+2000Hmov ax,2000Hbxmov ax,bx+2000h注意:适于数组、字符串、表格的处理 有效地址 =(BX)(BP) 8位(SI) 16位(DI)+位移量(6) 基址变址寻址方式*操作数的有效地址是

11、一个基址寄存器(BX/BP)和一个变址寄存器(SI/DI)内容的和,操作数在存储器中。指令格式: MOV AX, BX DIMOV AX, BX+DIMOV AX, ES:BX SI注意:适于数组、字符串、表格的处理必须是一个基址寄存器和一个变址寄存器的组合MOV AX, BX BP MOV AX, SI DI 有效地址 =(BX) (SI)(BP) (DI)+( 7 ) 相对基址变址寻址方式*操作数的有效地址是一个基址寄存器(BX/BP)和一个变址寄存器(SI/DI)内容和指令中指定的位移量之和的和,操作数在存储器中。指令格式: MOV AX, MASK BX SI或 MOV AX, MAS

12、K BX+SI或 MOV AX, MASK+BX+SI注意:适于二维数组、堆栈数据处理 有效地址 =(BX) (SI) 8位(BP) (DI) 16位+位移量80 x86的指令系统 数据传送指令 *算术指令 *逻辑指令 *串处理指令控制转移指令 *处理机控制与杂项操作指令数据传送指令数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中分类通用数据传送指令 MOV,PUSH/POP,XCHG累加器专用指令 IN,OUT,XLAT地址传送指令 LEA,LDS,LES,LFS,LGS,LSS标志寄存器传送指 LAHF,SAHF,PUSHF,POPF类型转换指令 CBW,CWD/CWDE,CD

13、Q,BSWAP通用数据传送指令(1)MOV 传送指令格式 MOV DST,SRC操作 (DST)(SRC) DST表示目的操作数,SRC表示源操作数MOV mem/reg1,mem/reg2 | 不能同为存储器MOV reg,data | MOV ac,memMOV segreg,acMOV segreg,mem/reg |不能为CSMOV mem/reg,segregMOV mem,data注意: DST、SRC 不能同时为段寄存器 立即数不能直接送段寄存器DST 不能是立即数和CSDST、SRC 不能同时为存储器寻址不影响标志位PUSH入栈指令 POP出栈指令格式 PUSH SRC操作 1

14、6位指令(SP)(SP)-2(SP)+1),(SP)(SRC)PUSH regPUSH memPUSH dataPUSH segreg格式 POP DST操作 16位指令(DST) (SP)+1),(SP)(SP)(SP)+2POP regPOP memPOP segreg算术指令包括二进制运算和十进制运算指令分类加法指令 ADD、ADC、INC减法指令 SUB、SBB、DEC、NEG、CMP乘法指令 MUL、IMUL 除法指令 DIV、IDIV十进制调整指令 DAA、DAS、AAA、AAS、AAM、AAD逻辑指令逻辑运算指令 AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR

15、、 SAL 、SAR、 ROL、ROR、RCL、RCR控制转移指令无条件转移指令JMP条件转移指令JZ / JNZ JE / JNEJS / JNS JO / JNOJP / JNPJB / JNBJL / JNLJBE / JNBEJLE / JNLEJCXZ 循环指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE 子程序调用和返回指令 CALL、RET中断与中断返回指令 INT、INTO、IRET(1)根据单个条件标志的设置情况转移 格式 测试条件JZ(JE) OPRZF = 1JNZ(JNE) OPRZF = 0JS OPRSF = 1JNS OPRSF = 0J

16、O OPROF = 1JNO OPROF = 0JP OPRPF = 1JNP OPRPF = 0JC OPRCF = 1JNC OPRCF = 0(2)根据复合条件标志设置情况转移比较两个无符号数,并根据比较结果转移:格式:JB (JNAE,JC) OPR测试条件:CF = 1:格式:JNB (JAE,JNC) OPR测试条件:CF = 0 :格式:JBE (JNA) OPR 测试条件:CFZF = 1:格式:JNBE (JA) OPR测试条件:CFZF = 0* 适用于地址或双精度数低位字的比较比较两个带符号数,并根据比较结果转移:格式:JL (JNGE) OPR 测试条件:SFOF =

17、1:格式:JNL (JGE) OPR 测试条件:SFOF = 0:格式:JLE (JNG) OPR测试条件:(SFOF)ZF = 1:格式:JNLE (JG) OPR 测试条件:(SFOF)ZF = 0* 适用于带符号数的比较程序设计步骤模块划分模块设计流程图编写代码必要的注释结构顺序分支循环子程序例:显示MxN的星号方阵算法思路:重复M次每次输出N个星号开始结束行计数器M一行显示N个*行计数器减1行计数器0?YesNo开始结束行计数器M行计数器减1行计数器0?YesNo列计数器M显示1个*输出换行列计数器-10?YesNo根据框图设计程序 mov bx,mrow: mov cx,ncol:

18、mov dl,* mov ah,02 int 21h loop col mov dl,0dh mov ah,02 int 21h mov dl,0ah mov ah,2 int 21h dec bx jnz row int 20h M dw 5 N dw 4寄存器使用行计数器:BX列计数器:CX开始结束行计数器M行计数器减1行计数器0?YesNo列计数器M显示1个*输出换行列计数器-10?YesNo分支程序的结构形式分支程序有两种形式If_then_else 形式 和 Case 形式双分支 多分支判定条件程序段1程序段2分支前的语句分支后的语句YN判定条件程序段1程序段2程序段n.分支后的语句

19、分支前的语句分支程序程序的分支一般用条件转移指令来产生。有时双分支的一支可能为空-单分支判定条件程序段1分支前的语句分支后的语句YN判定条件程序段2分支前的语句分支后的语句YN分支后的语句判定条件程序段分支前的语句YN例 将AX,BX和CX寄存器中最大的数保存在DX中算法思路首先将AX和BX中大的放在DX中然后将CX和DX中大的放在DX中框图开始开始AXBXAXDXBXDXCXDXCXDXNYYN根据框图编写程序 CMP AX,BX JNC L1 MOV DX,BX JMPL1:MOV DX,AXL2:CMP CX,DX JC L3 MOV DX,CXL3: INT 20H 开始结束AXBXA

20、XDXBXDXCXBXAXDXBXDXDXCXCXDXNYYNL1:L2:例2 统计Buff 开始的以$结尾的字符串中大写字母和小写字母的个数存放在AH和AL中思路:首先必须依次取出要判断的字符,然后判断是否是大写或小写,并分别计数要点:这个重复的过程如何结束?(循环的控制)不同的循环控制策略可能使得程序出现错误(边界问题)开始结束大小写计数器清0;取数指针Buff取一个字符到寄存器是$吗?大写字母判断并计数小写字母判断并计数取数指针后移一个流程图细化将复杂的处理框细化开始结束大小写计数器清0;取数指针Buff取一个字符到寄存器是$吗?大写字母判断并计数小写字母判断并计数取数指针后移一个大于z小于a小写计数器+1YYNN大于Z小于A大写计数器+1YYNN编写程序寄存器分配AH 大写计数器AL 小写计数器BX 取数指针CL 取数寄存器可以写出如下代码 mov ax,0 mov bx,offset ptr Buff Again: mov cl,bx cmp cl,$ jz ok 大写字母判断并计数 小写字母判断并计数 inc bx jmp Again ok: int 20H Buff DB This is STRING1$开始结束大小写计数器清0;取数指针Buff取一个字符到寄存器

温馨提示

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

评论

0/150

提交评论