汇编语言程序设计总复习.ppt

上传人:文库蛋蛋多 文档编号:2977415 上传时间:2023-03-07 格式:PPT 页数:49 大小:388KB
返回 下载 相关 举报
汇编语言程序设计总复习.ppt_第1页
第1页 / 共49页
汇编语言程序设计总复习.ppt_第2页
第2页 / 共49页
汇编语言程序设计总复习.ppt_第3页
第3页 / 共49页
汇编语言程序设计总复习.ppt_第4页
第4页 / 共49页
汇编语言程序设计总复习.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《汇编语言程序设计总复习.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计总复习.ppt(49页珍藏版)》请在三一办公上搜索。

1、汇编语言程序设计,教材IBM-PC汇编语言程序设计第2版清华大学出版社,2007年5月第20次印刷,沈美明等著。参考书180X86汇编语言程序设计教程,杨季文等著,清华大学出版社。2汇编语言程序设计,钱晓捷著,电子工业出版社。3IBM-PC汇编语言程序设计实验教程,沈美明著,清华大学出版社。,第1章 汇编语言基础知识第2章 80X86计算机组织第3章 80X86指令系统和寻址方式第4章 汇编语言程序格式第5章 循环与分支程序设计第6章 子程序结构第7章 高级汇编语言技术第8章 输入/输出和中断程序设计,目录,期末考试,第1章 教学要求,1教学目的:掌握汇编语言概念极其使用的进位计数制、不同进位

2、计数制之间的转换、计算机编码以及基本数据类型。2教学要求:了解汇编语言的基本概念 理解汇编语言使用的进位计数制 熟练掌握不同进制之间转换、计算机的编码 熟悉汇编语言中的基本数据类型,第1章 教学要求,3教学重点:不同进制之间转换 计算机的编码4掌握难点:不同进制之间转换 计算机的编码5复习内容摘要,例:1.(10010)2(36)8(25)10(18)162.125.5D=(?)B=(?)Q=(?)H=(?)BCD,第2章 教学要求,1教学目的:掌握INTEL80X86微处理器概况以及基于微 处理器的计算机系统构成,为汇编语言编程奠定基础。2教学要求:了解INTEL80X86微处理器概况 理解

3、基于微处理器的计算机系统构成 熟练掌握汇编语言编程所需的CPU功能结构、微机存储器(MEM)组织和微机接口组织等基础知识,第2章 教学要求,3教学重点:微处理器的功能结构 微存储器组织4掌握难点:微处理器的寄存器组 存储器寻址5复习内容摘要,例:1.CPU发出的访问存储器的地址是(A)。A.物理地址 B.偏移地址 C.逻辑地址 D.段地址 2.DEC BYTE PTRBX中的操作数的数据类型是(C)。A.字 B.双字 C.字节 D.四字3.BUFFER DB 01H,0AH,BUFFER称为(A)。A.符号 B.变量 C.助记符 D.标号,第3章 教学要求,1教学目的:掌握微机寻址方式和808

4、6微处理器指令系统2教学要求:熟悉指令构成,了解指令执行时间。掌握10种寻址方式。熟悉指令系统的六大类指令,要求结合上机实践熟练掌握常用指令。IBM-PC计算机全部指令的集合称为它的 指令系统。这些指令按功能可以分为六大类:数据传送指令、算术运算指令、逻辑运算和移位指令、串处理指令、控制转移指令 和 处理器控制指令。,第3章 教学要求,结合指令举例逐步熟悉和掌握汇编语言程序的格式,以及典型程序段。了解80 x86和PENTIUM CPU扩充和增加的指令。3教学重点:寻址方式 8086微处理器指令系统4掌握难点:寄存器的应用 存储器的结构5复习内容摘要,第3章 教学要求,例:1.若AX=3500

5、H,CX=56B8H,当AND AX,CX指令执行后,AX=(A)。A.1400H B.77F8H C.0000H D.0FFFFH 2.指令JMP FAR PTR DONE属于(C)。A.段内转移直接寻址 B.段内转移间接寻址C.段间转移直接寻址 D.段间转移间接寻址 3.将AX 清零,下列指令错误的是(C)。A.SUB AX,AX B.XOR AX,AX C.OR AX,00H D.AND AX,00H 4.一定要掌握的指令:INC、DEC、MOV、ADD、ADC、SUB、SBB、MUL、DIV、SHR、SAR、ROR、RCR、LOOP、LOOPZ、REP、SCASB、CMPSB、MOVS

6、B、PUSH、POP、PUSHF、JLE、JG、TEST、CMP、AND、LEA,第4章 教学要求,1教学目的:掌握微型汇编语言格式和程序设计方法2教学要求:熟悉汇编语言程序的结构、语句类型和格式。熟悉数据项及表达式,要求能明确区分标号和变量。熟悉各类伪指令,要求掌握常用伪指令格式和应用。熟悉汇编语言上机过程和DEBUG调试,第4章 教学要求,3教学重点:指令语句格式和伪指令语句格式 汇编语言程序格式。4掌握难点:伪指令 伪指令存储器分配技术5复习内容摘要,例:1.BUFF DB 1234567,则BUFF字节单元的内容是:31H?2.将数据5618H存放在存储单元中的伪指令是(B)。A.DA

7、TA1 DW 1856H B.DATA1 DB 18H,56H C.DATA1 EQU 5618H D.DATA1 DB 18H,00H,56H,00H3.MOVSP,3210H PUSHAX执行上述指令序列后,SP寄存器的值是(B)。A.3211H B.320EH C.320FH D.3212H,第5章 教学要求,1教学目的:掌握微型汇编语言程序分析和设计方法2教学要求:熟悉汇编语言程序设计的基本步骤。掌握程序流程图的使用,会利用其分析问题。掌握汇编语言的顺序、分支、循环程序的设计。了解实模式下80386及其后继机型的汇编语言的程序设计,第5章 教学要求,3教学重点:利用流程图分析问题。顺序

8、、分支、循环程序的设计。4掌握难点:分支程序设计 循环程序设计5复习内容摘要,第5章 教学要求,例:1.把 BX 中的二进制数以十六进制的形式显示在屏幕2.编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!,0DH,0AH,$COUNT DW 17 DATA ENDS 3.有数组 x(x1,x2,x10)和 y(y1,y2,y10),编程计算 z(z1,z2,z10)4.将首地址为A的字数组从小到大排序:32,85,16,15,8 5.求首地址为ARRAY的M个字之和,结果存入TOTAL6.折半查找算法,mov cx,4;初始化r

9、otate:push cx mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h;09 ASCII 30H39H cmp al,3ah jl printit add al,7h;AF ASCII 41H46Hprintit:mov dl,al mov ah,2 int 21h pop cx loop rotate,方法1(LOOP),x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10l

10、ogic_rule dw 00dch;0000,0000,1101,1100 mov bx,0 mov cx,10 mov dx,logic_rulenext:mov ax,xbx shr dx,1 jc subtract add ax,ybx jmp short result;向前引用subtract:sub ax,ybxresult:mov zbx,ax add bx,2 loop next,mov cx,5;元素个数 dec cx;比较遍数loop1:mov di,cx;比较次数 mov bx,0loop2:mov ax,Abx;相邻两数 cmp ax,Abx+2;比较 jle cont

11、inue xchg ax,Abx+2;交换位置 mov Abx,axcontinue:add bx,2 loop loop2 mov cx,di loop loop1,(2)条件控制,data segment array dw 12,11,22,33,44,55,66 dw 77,88,99,111,222,333 number dw 55 low_idx dw?high_idx dw?data ends,例:折半查找算法.在数据段中,有一个按从小到大顺序排列的无符号数字数组ARRAY,数组中的第一个单元存放着数组的长度。在AX中有一个无符号数,要求在数组中查找number,如果找到,则使CF

12、=0,并在SI中给出该元素在数组中的偏移地址;如未找到,则使CF=1。,lea di,array mov ax,number;要查找数 cmp ax,di+2;(ax)与第一个元素比较 ja chk_last lea si,di+2 je exit;(ax)第一个元素,找到退出 stc jmp exit;(ax)最后一个元素,未找到退出,算法,compare:cmp ax,bx+si je exit ja higher dec cx mov high_idx,cx jmp midhigher:inc cx mov low_idx,cx jmp midno_match:stcexit:,sear

13、ch:mov low_idx,1 mov bx,di;个数 mov high_idx,bx mov bx,dimid:mov cx,low_idx mov dx,high_idx cmp cx,dx ja no_match add cx,dx shr cx,1 mov si,cx shl si,1,第6章 教学要求,1教学目的:掌握子程序的定义以及调用2教学要求:子程序定义伪操作 子程序的调用和返回 保存和恢复寄存器以及参数的传递 子程序的嵌套 递归子程序 DOS系统功能调用,第6章 教学要求,3教学重点:子程序的调用和返回 保存和恢复寄存器以及参数的传递 子程序的嵌套调用4掌握难点:保存和恢

14、复寄存器以及参数的传递 子程序的嵌套 递归子程序 DOS系统功能调用5复习内容摘要,第6章 教学要求,例:1.下列程序段实现何种功能:STRING DB ABCDEFGHIJ MOV AH,01;从键盘输入字符1-9 INT 21H AND AL,0FH DEC AL XOR AH,AH MOV BX,OFFSET STRING ADD BX,AX MOV DL,BX MOV AH,02H;显示输出 INT 21H2.十进制到十六进制转换的程序。程序要求从键盘取得一个十进制数,然后把该数以十六进制的形式在屏幕上显示出来。,6.3 子程序举例,例1:HEXIDEX是一个十六进制数转换成十进制数的

15、程序。要求把从键盘输入的0 FFFFH的十六进制正数转换为十进制数并在屏幕上显示出来。,Display equ 2hKey equ 1hDoscall equ 21hHexidec segmentMain proc far assume cs:hexidecStart:push ds sub ax,ax push ax call hexidec call crlf call binidec call crlf jmp main ret main endp,Crlf proc near mov dl,0ah mov ah,display int boscall mov dl,0dh mov ah

16、,display int doscall ret crlf endpHexidec ends end start,Hexidec proc near mov bx,0Newchar:mov key_in int doscall sub al,30h jl exit cmp al,10d jl add_to sub al,27h cmp al,0ah jl exit cmp ah,10h jge exitAdd_to:mov cl,4 shl bx,cl mov ah,0 add bx,ax jmpExit:RetHexidec endp,Binidec proc near mov cx,100

17、00d call dec_div mov cx,1000d call dec_div mov cx,100d call dec_div mov cx,10d call dec_div mov cx,1d call dec_div retDec_div proc near mov ax,bx mov dx,0 div cx mov bx,dx mov dl,al add dl,30h mov ah,display int doscall,retdec_div endpBinidec endp,第7章 教学要求,1教学目的:掌握高级汇编语言技术2教学要求:理解宏汇编的概念和作用。掌握宏汇编的编程技

18、术。了解重复汇编概念和使用方法。掌握条件汇编概念和使用方法。,第7章教学要求,3教学重点:宏汇编的编程技术。4掌握难点:宏汇编的概念5复习内容摘要,第7章 教学要求,例:1.下列程序段实现:根据键盘输入04的不同值,实现程序分支。BRANCH_TABDWR0,R1,R2,R3,R4MOVBX,OFFSET BRANCH_TABMOVAH,1INT21H_(1)_SUB AL,30H_MOVAH,0ADDAX,AXADDBX,AX_(2)_JMPBX_;转到相应分支2.将两个16位数相加,结果存入16位 RESULT 单元中 3.伪操作&、伪操作%的使用方法4.定重复伪指令REPT、不定重复伪指

19、令IRP,用一个例子来说明宏定义、宏调用和宏展开的情况例:将两个16位数相加,结果存入16位 RESULT 单元中。;对两数相加功能进行宏定义,安徽理工大学 计算机科学与技术系 李敬兆 汇编语言,第7章,BCDADD MACRO VARX,VARY,RESULT MOV AL,VARX ADD AL,VARY MOV RESULT,AL MOV AL,VARX1 ADC AL,VARY1 MOV RESULT1,AL ENDMDATA SEGMENT A1 DW 1234H A2 DW 5678H A3 DW?B1 DW 1357H B2 DW 2468H B3 DW?DATA ENDSCOD

20、E SEGMENT ASSUME CS:CODE,DS:DATASTART:PUSH DS MOV AX,0 PUSH AX,安徽理工大学 计算机科学与技术系 李敬兆 汇编语言,第7章,MOV AX,DATA MOV DS,AX BCDADD A1,A2,A3;宏调用 BCDADD B1,B2,B3;再次宏调用 RETCODE ENDS END START经宏展开后:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX,MOV AL,A1 1 ADD AL,A21 MOV A3,AL1 MOV AL,A111 ADC AL,A21 MOV A31,AL1

21、 MOV AL,B1 1 ADD AL,B2 1 MOV B3,AL1 MOV AL,B11 ADC AL,B21MOV B31,AL 宏汇编程序在所展开的指令前标识以1号以示区别。较早的版本用+,安徽理工大学 计算机科学与技术系 李敬兆 汇编语言,第7章,第8章 教学要求,1教学目的:掌握I/O程序设计,特别是实模式下的中断程序设计的方法2教学要求:掌握I/O端口与端口地址及I/O指令。熟悉无条件传送、查询传送、中断传送和DMA传送的基本工作原理。熟悉内部中断和外部中断,理解中断向量表的安排。掌握中断请求、中断判优、中断响应、中断处理和中断返回五个过程的原理。,第8章 教学要求,了解内部中断

22、和外部中断,理解中断向量表的安排。掌握中断处理程序的设计 掌握设置和获取中断向量的方法 了解BIOS中断调用概念和调用方法 了解DOS中断调用概念和调用方法,第8章 教学要求,3教学重点:中断传送 中断处理程序的设计4掌握难点:中断处理程序的设计5复习内容摘要,第8章 教学要求,例:1使用DOS系统功能调用时,使用的软中断指令是()。(A)INT21(B)INT10H(C)INT16H(D)INT21H2.在8086系统中,内存最低端的1K字节地址范围内(从00000003FFH),放置256个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入

23、口地址的段地址,地址较低的两个字节放偏移地址。中断向量表中的存储地址中断类型码n4,程序(段)设计,1.编写一段显示字符串STRING的程序2.x、y、z均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现:w=x+y+24-z,并用W,W+2单元存放w。3.定义宏指令FINSUN:比较两个数X和Y(X、Y为数,而不是地址),若XY则执行SUMX+2*Y;否则执行SUMX*2+Y 4.编程计算SUM=,已知依次存放在以BUF为首址的数据区,每个数据占两个字节,和数SUM也为两个字节。5.x,y,z,v均为16位带符号数,计算(v-(x*y+z-540)/

24、x6.比较两个字符串,找出它们不相匹配的位置7.X50,转到TOO_HIGH;计算X-Y,溢出转到OVERFLOW,否则|X-Y|RESULT8.求首地址为ARRAY的M个字之和,结果存入TOTAL。,例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!,0DH,0AH,$COUNT DW 17 DATA ENDS(1)直接寻址 mov dl,string;mov dl,H mov ah,2 int 21h;显示字符H mov dl,string+1;mov dl,A mov ah,2 int 21h;显示字符A.,(4)基址变

25、址寻址 mov cx,count;mov cx,17 mov bx,offset string;string的偏址 bx mov si,0 next:mov dl,bxsi;mov dl,bx+si mov ah,2 int 21h;显示一个字符 inc si loop next;循环指令(5)DOS显示字符串功能 mov dx,offset string;string的偏址 dx;lea dx,string mov ah,9 int 21h;显示一串字符,例:x、y、z均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现 w x+y+24-z,并用W,

26、W+2单元存放w。MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2;x+y ADD AX,24 ADC DX,0;x+y+24 SUB AX,Z SBB DX,Z+2;x+y+24-z MOV W,AX MOV W+2,DX;结果存入W,W+2单元,例:x,y,z,v均为16位带符号数,计算(v-(x*y+z-540)/x MOV AX,X IMUL Y;x*y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX;x*y+z SUB CX,540 SBB BX,0;x*y+z-540 MOV AX,V CWD

27、SUB AX,CX SBB DX,BX;v-(x*y+z-540)IDIV X;(v-(x*y+z-540)/x,例3.61 比较两个字符串,找出它们不相匹配的位置 lea si,mess1lea di,mess2mov cx,8cldrepe cmpsb,例:反向传送,例3.64 X50,转到TOO_HIGH;计算X-Y,溢出转到OVERFLOW,否则|X-Y|RESULT,MOV AX,XCMP AX,50JG TOO_HIGHSUB AX,YJO OVERFLOWJNS NONNEGNEG AX NONNEG:MOV RESULT,AXTOO_HIGH:OVERFLOW:,例3.67 求

28、首地址为ARRAY的M个字之和,结果存入TOTAL。,MOV CX,M MOV AX,0 MOV SI,AXSTART_LOOP:ADD AX,ARRAYSIADD SI,2LOOP START_LOOPMOV TOTAL,AX,定义宏指令FINSUM:比较两个数X和Y(X、Y为数,而不是地址),若XY则执行SUMX+2*Y;否则执行SUM2*X+Y。答:宏定义如下:CALCULATEMACROA,B,RESULT;计算RESULT2*A+BMOVAX,ASHLAX,1ADDAX,BMOVRESULT,AXENDMFINSUMMACROX,Y,SUMIFX GT YCALCULATE Y,X,SUMELSECALCULATE X,Y,SUMENDIFENDM,运算符的优先级,Thank you!,预祝各位同学考出好成绩!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号