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

上传人:yyf 文档编号:5029004 上传时间:2020-01-29 格式: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)16 2. 125.5D=( ? )B=( ? )Q=( ? )H=( ? )BCD,第2章 教学要求,1教学目的:掌握INTEL80X86微处理器概况以及基于微 处理器的计算机系统构成,为汇编语言编程

3、奠定基础。 2教学要求: 了解INTEL80X86微处理器概况 理解基于微处理器的计算机系统构成 熟练掌握汇编语言编程所需的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)。

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

5、式 8086微处理器指令系统 4掌握难点: 寄存器的应用 存储器的结构 5复习内容摘要,第3章 教学要求,例: 1.若AX=3500H,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

6、、DEC、MOV、ADD、ADC、SUB、SBB、MUL、DIV、SHR、SAR、ROR、RCR、LOOP、LOOPZ、REP、SCASB、CMPSB、MOVSB、PUSH、POP、PUSHF、JLE、JG、TEST、CMP、AND、LEA,第4章 教学要求,1教学目的:掌握微型汇编语言格式和程序设计方法 2教学要求: 熟悉汇编语言程序的结构、语句类型和格式。 熟悉数据项及表达式,要求能明确区分标号和变 量。 熟悉各类伪指令,要求掌握常用伪指令格式和应 用。 熟悉汇编语言上机过程和DEBUG调试,第4章 教学要求,3教学重点: 指令语句格式和伪指令语句格式 汇编语言程序格式。 4掌握难点: 伪

7、指令 伪指令存储器分配技术 5复习内容摘要,例: 1. BUFF DB 1234567,则BUFF字节单元的内容是:31H? 2.将数据5618H存放在存储单元中的伪指令是( B)。 A. DATA1 DW 1856H B. DATA1 DB 18H,56H C. DATA1 EQU 5618H D. DATA1 DB 18H,00H,56H,00H 3. MOV SP,3210H PUSH AX 执行上述指令序列后,SP寄存器的值是( B )。 A.3211H B.320EH C.320FH D.3212H,第5章 教学要求,1教学目的:掌握微型汇编语言程序分析和设计方法 2教学要求: 熟悉

8、汇编语言程序设计的基本步骤。 掌握程序流程图的使用,会利用其分析问题。 掌握汇编语言的顺序、分支、循环程序的设计。 了解实模式下80386及其后继机型的汇编语言的程 序设计,第5章 教学要求,3教学重点: 利用流程图分析问题。 顺序、分支、循环程序的设计。 4掌握难点: 分支程序设计 循环程序设计 5复习内容摘要,第5章 教学要求,例: 1.把 BX 中的二进制数以十六进制的形式显示在屏幕 2.编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!, 0DH , 0AH , $ COUNT DW 17 DATA ENDS 3. 有数组

9、 x(x1,x2,x10) 和 y(y1,y2,y10),编程计算 z(z1,z2,z10) 4.将首地址为A的字数组从小到大排序:32,85,16,15, 8 5.求首地址为ARRAY的M个字之和,结果存入TOTAL 6.折半查找算法, mov cx, 4 ;初始化 rotate: 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 41H46H printit: mov dl, al mov

10、 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,z10 logic_rule dw 00dch ;0000,0000,1101,1100 mov bx, 0 mov cx, 10 mov dx, logic_rule next: mov ax, xbx shr dx, 1 jc subtract add ax, ybx jmp short res

11、ult ; 向前引用 subtract: sub ax, ybx result: mov zbx, ax add bx, 2 loop next ,mov cx, 5 ;元素个数 dec cx ;比较遍数 loop1: mov di, cx ;比较次数 mov bx, 0 loop2: mov ax, Abx ;相邻两数 cmp ax, Abx+2 ; 比较 jle continue xchg ax, Abx+2 ;交换位置 mov Abx, ax continue: add bx, 2 loop loop2 mov cx, di loop loop1,(2) 条件控制,data segmen

12、t 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=0,并在SI中给出该元素在数组中的偏移地址;如未找到,则使CF=1。, lea di, array mov ax, number ;要查找数 cmp ax, di+2 ; (ax)与第一个元素比较

13、 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 mid higher: inc cx mov low_idx, cx jmp mid no_match: stc exit: ,search: mov low_idx, 1 mov bx, di ;个数 mov high_idx, bx mov bx, di mid: mov cx, lo

14、w_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掌握难点: 保存和恢复寄存器以及参数的传递 子程序的嵌套 递归子程序 DOS系统功能调用 5复习内容摘要,第6章 教学要求,例: 1.

15、 下列程序段实现何种功能: 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 21H 2.十进制到十六进制转换的程序。程序要求从键盘取得一个十进制数,然后把该数以十六进制的形式在屏幕上显示出来。,6.3 子程序举例,例1:HEXIDEX是一个十六进制数转换成十进制数的程序。要求把从键盘输入的0 FFFFH的十六进制正数转换为十进制数并在屏幕上显示出来。,Displa

16、y equ 2h Key equ 1h Doscall equ 21h Hexidec segment Main proc far assume cs:hexidec Start: 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,display int doscall ret crlf endp Hexidec

17、ends end start,Hexidec proc near mov bx ,0 Newchar: 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 exit Add_to: mov cl ,4 shl bx , cl mov ah ,0 add bx,ax jmp Exit: Ret Hexidec endp,Binidec proc near mov cx , 10000d call dec_div mov cx ,

18、1000d call dec_div mov cx,100d call dec_div mov cx,10d call dec_div mov cx,1d call dec_div ret Dec_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,ret dec_div endp Binidec endp,第7章 教学要求,1教学目的:掌握高级汇编语言技术 2教学要求: 理解宏汇编的概念和作用。 掌握宏汇编的编程技术。 了解重复汇编概念和使用方法

19、。 掌握条件汇编概念和使用方法。,第7章教学要求,3教学重点: 宏汇编的编程技术。 4掌握难点: 宏汇编的概念 5复习内容摘要,第7章 教学要求,例: 1. 下列程序段实现:根据键盘输入04的不同值,实现程序分支。BRANCH_TAB DW R0,R1,R2,R3,R4 MOV BX,OFFSET BRANCH_TAB MOV AH,1 INT 21H _(1)_SUB AL,30H_ MOV AH,0 ADD AX,AX ADD BX,AX _(2)_JMPBX_;转到相应分支 2.将两个16位数相加,结果存入16位 RESULT 单元中 3.伪操作&、伪操作%的使用方法 4.定重复伪指令R

20、EPT、不定重复伪指令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 ENDM DATA SEGMENT A1 DW 1234H A2 DW 5678H A3 DW ? B1 DW 1357H B2 DW 2468H B3

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

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

23、响应、中断处理和 中断返回五个过程的原理。,第8章 教学要求,了解内部中断和外部中断,理解中断向量表的安排。 掌握中断处理程序的设计 掌握设置和获取中断向量的方法 了解BIOS中断调用概念和调用方法 了解DOS中断调用概念和调用方法,第8章 教学要求,3教学重点: 中断传送 中断处理程序的设计 4掌握难点: 中断处理程序的设计 5复习内容摘要,第8章 教学要求,例: 1使用DOS系统功能调用时,使用的软中断指令是( )。 (A)INT 21 (B)INT 10H (C)INT 16H (D)INT 21H 2.在8086系统中,内存最低端的1K字节地址范围内(从00000003FFH),放置2

24、56个中断的中断向量(入口地址),即称为中断向量表。每个中断矢量在表中占据4个字节,地址较高的两个字节放入口地址的段地址,地址较低的两个字节放偏移地址。 中断向量表中的存储地址中断类型码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为首址

25、的数据区,每个数据占两个字节,和数SUM也为两个字节。 5. x,y,z,v均为16位带符号数,计算(v-(x*y+z-540)/x 6.比较两个字符串,找出它们不相匹配的位置 7. X50,转到TOO_HIGH;计算X-Y,溢出转到OVERFLOW,否则|X-Y|RESULT 8.求首地址为ARRAY的M个字之和,结果存入TOTAL。,例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!, 0DH , 0AH , $ COUNT DW 17 DATA ENDS (1)直接寻址 mov dl, string ; mov dl,

26、H mov ah, 2 int 21h ; 显示字符H mov dl, string+1 ; mov dl, A mov ah, 2 int 21h ; 显示字符A .,(4)基址变址寻址 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的

27、偏址 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, 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位带

28、符号数,计算(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 SUB AX, CX SBB DX, BX ; v-(x*y+z-540) IDIV X ; (v-(x*y+z-540)/x,例3.61 比较两个字符串,找出它们不相匹配的位置 lea si, mess1 lea di, mess2 mov cx, 8 cld repe cmp

29、sb,例:反向传送,例3.64 X50,转到TOO_HIGH; 计算X-Y,溢出转到OVERFLOW,否则 |X-Y|RESULT,MOV AX, X CMP AX, 50 JG TOO_HIGH SUB AX, Y JO OVERFLOW JNS NONNEG NEG AX NONNEG: MOV RESULT, AX TOO_HIGH: OVERFLOW: ,例3.67 求首地址为ARRAY的M个字之和,结果存入 TOTAL。,MOV CX, M MOV AX, 0 MOV SI, AX START_LOOP: ADD AX, ARRAYSI ADD SI, 2 LOOP START_LO

30、OP MOV TOTAL, AX,定义宏指令FINSUM:比较两个数X和Y(X、Y为数,而不是地址),若XY则执行SUMX+2*Y;否则执行SUM2*X+Y。 答:宏定义如下: CALCULATE MACRO A, B, RESULT ;计算RESULT2*A+B MOV AX, A SHL AX, 1 ADD AX, B MOV RESULT, AX ENDM FINSUM MACRO X, Y, SUM IF X GT Y CALCULATE Y, X, SUM ELSE CALCULATE X, Y, SUM ENDIF ENDM,运算符的优先级,Thank you !, 预祝各位同学考出好成绩!,

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1