ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:23.36KB ,
资源ID:8227427      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8227427.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(原创汇编考前终极攻略JRH.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

原创汇编考前终极攻略JRH.docx

1、原创汇编考前终极攻略JRHAuthor:JRH from XJTU CS 09 2011-7-10汇编语言考前总结第一章基础知识【大纲要求】1掌握常用的各种进制数的表示、转换规则和运算;2掌握带符号数的码制表示方法及其补码运算;3熟悉数据的表示范围;4了解计算机存取信息的基本数据类型;5了解计算机中字符的表示;6熟悉几种基本的逻辑运算;7什么叫汇编语言。【思考题】 1. 计算机内部是采用什么计数制来表示数和信息的? 二进制 2. 十进制数转换为二进制数有几种方法? 降冪法、除法3. 二进制数和十六进制数是如何相互转换的? 二进制到十六进制:从低到高四位一组,直接用十六进制数表示。4. 计算机中

2、如何表示正负数的? 原码、反码、补码5. 计算机中的整数有几种表示方法?最常用的是哪一种码制? 6. 基本的逻辑运算包括哪几种运算? 与、或、非、异或7. 求补的运算规则是什么? 除符号位,按位取反最后加一8. 计算机中是采用什么代码来表示字符的?ASCII码第2章 80X86 计算机组织【大纲要求】1熟悉计算机系统的组成;2熟练掌握8086/8088CPU的寄存器组;3掌握80X86CPU的寄存器组;4掌握存储器地址的分段表示及其物理地址的计算;5熟悉段的引用规定。1.微计算机系统一般包括哪两部分? 硬件和软件2. 8086 微处理器主要由哪几部分组成?它们的功能是什么? 算术逻辑部件ALU

3、(arithmetic logic unit):进行算术和逻辑运算。 控制逻辑:负责全机的控制工作。 工作寄存器:相当于运算器中的一个储存单元,存放计算过程中所需要或所得到的各种信息(地址、数据、中间结果)3.一个字节和一个字分别由几个二进制位组成? 8位 16位4.在Intel系列微型机中是如何编址的? 5.一个字节和一个字在存储器中是如何存储的? 字节:8bit存放一个字节字:低位字节存入低地址,高位字节存入高地址 6.字单元的地址是偶数或是奇数时,访问存储器有什么不同? 字单元的地址用其低位地址表示,因为以偶地址访问(读/写)存储器,一次读一个字节长度。如果字单元地址是偶数,那么访问一个

4、字只需一次,而如果字单元地址是奇数,访问一个字序两次。7.8086微型机可以访问的最大存储空间是多少?应用几位地址来表示? 1M 20位地址8.在8086微机中,如何提供20位的地址?如何形成物理地址? 储存器采用分段管理,一个内存单元地址由 段基址:偏移量 两个逻辑地址来描述。物理地址=10H段寄存器 + 偏移地址9.8086微机中,存储器空间可分为几种逻辑段?每段的可寻址空间是多大?段地址存放在哪些寄存器中? 4种。64K。代码段CS寄存器、数据段DS寄存器、堆栈段SS寄存器、附加段ES寄存器10.CPU中有哪几类寄存器,它们各自的专门用途是什么? 数据寄存器:AX:累加器,乘除指令存放操

5、作数,I/O指令使用其与外设传送信息BX:通用,常用作基址寄存器CX:计数器(移位指令、循环指令、传处理指令)DX:双字长运算(和AX组合)存放高位字,I/O操作存放I/O端口地址(对25665535号端口读写时用)。指针及变址寄存器:SP:存放当前堆栈栈顶偏移量,总是和SS堆栈寄存器配合BP:存放地址偏移量或数据,缺省和SS配合DI:存放串数据的目的地址偏移量(或数据)若存放偏移量时,缺省情况与DS配合。SI:存放串数据的原地址偏移量(或数据)若存放偏移量时,缺省情况与DS配合 控制寄存器:IP:存放代码段中的指令地址偏移量,始终指向下一条即将执行的指令的首地址,控制器根据指令字长自动增加F

6、LAGES 段寄存器: CS:存放当前正在运行的程序代码段基地址DS:指定当前运行程序所使用的数据段基地址 SS:指定堆栈段位置,存放堆栈段的基地址ES:指定当前运行程序所使用的附加数据段基地址 11.条件码标志和控制标志各包含几位?它们每位所表示的意义是什么? 条件码标志位用于记录程序运行结果的状态信息,共6位: OF 溢出标志 SF 符号标志ZF 零标志CF 进位标志AF 辅助进位标志PF 奇偶标志控制标志位控制处理器的操作,要通过专门的指令才能使控制标志位变化。 DF 方向标志 IF 中断标志TF 陷阱标志 12.什么是DOS和BIOS功能调用?第三章80x86的指令系统和寻址方式1.什

7、么是指令和指令系统?指令在什么时候由哪部分来执行?指令:指令系统:一组指令集。计算机所能执行的所有指令的集合就是指令系统。算术逻辑单元执行。2.8086汇编语言指令由几部分组成?各部分的作用是什么?操作码字段:指示计算机所要做的操作操作数字段:指出在指令操作过程中所需要的操作数3.8086汇编语言指令可以有几个操作数?指令中指定的操作数可能存放在哪里? 零地址指令:ret 一地址指令:inc ax 二地址指令:mov ax,2000h 三地址指令:很少用存放在:指令中、寄存器中、内存单元中、I/O接口寄存器中4.什么是寻址方式?8086汇编语言提供了几种寻址方式? 1.(太哲学了!) 2. (

8、这样的问题很疼)寻址方式实际上非常之容易:记住四个寄存器:BX,BP;DI,SI;可以单独使用 如MOV AX,BX MOV AX,SI组合使用,但只能BX,BP中的一个和DI,SI中的一个搭配 如MOV AX,BX+SI 而MOV AX,BX+BP及MOV AX,DI+SI是错误的! 当然可以加常数如MOV AX,BX+SI+5知道这些后自己再对应其名字吧,什么“基址变址”什么 . 会用就行。5.各种寻址方式所确定的有效地址是什么? 偏移地址6.在存储器寻址方式中,为什么有时候要使用段跨越前缀? 段跨越前缀用以指定段寄存器7.8086机器语言指令由哪几个字节组成?为什么说汇编语言指令与机器指

9、令是一一对应的? 8086机器语言指令是多字节指令,一条指令可以由17个字节组成。具体见P498.8086的指令系统按功能可分为几组? 数据传送指令,算术指令,逻辑指令,传处理指令,控制转移指令。9.每条指令的功能、助记符、所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。 这个得好好看,看书吧。第四章汇编语言程序格式 【大纲要求】1了解机器语言和汇编语言的基本概念;机器语言:汇编语言:2掌握汇编语言语句的种类;指令、伪操作(也叫伪指令)和宏指令3掌握常用的伪指令;处理器选择伪操作:.8086段定义伪操作: 完整段定义伪操作 简化段定义伪操作数据定义及储存伪操

10、作:DB、DW、DD、?、DUP、LABLE表达式赋值伪操作:EQU地址计数器与对准伪操作:$:指令中-当前所在汇编的指令的首地址;伪操作参数字段地址计数器当前值ORG:设置当前地址计数器的值 应用例:BUFFER LABEL BYTE ORG $+8 相当于:BUFFER DB 8 DUP(?)EVEN:使下一个变量或地址开始于偶地址ALIGN:保证双字数组边界从4的倍数开始 基数控制伪操作:.RADIX expression 4掌握汇编语言语句的格式;名字 操作 操作数 注释5熟悉汇编语言程序的上机过程。编辑程序、汇编程序、连接程序、调试程序【学习目标】了解编辑程序、汇编程序、连接程序的功

11、能及其输入、输出文件的类型;编辑程序文本文件-asm 汇编程序 -obj 与lst 连接程序-exe了解汇编语言源程序的格式;熟练掌握并运用段定义伪指令和数据定义及存储器分伪指令;熟悉数值表达式书写规范;学会使用DEBUG调试程序一些命令:D T U R 等等【思考题】:1. 建立并运行一个汇编语言程序有几个操作步骤? 编辑程序、汇编程序、连接程序、执行程序2. 指令和伪指令的区别是什么? 指令在程序运用期间会被计算机执行,而伪指令是在汇编程序对源程序进行汇编时处理的操作。3. 在汇编语言程序中,段定义伪指令和数据定义伪指令起什么作用? (很哲学)段定义为指令作用:数据定义为指令作用:4. 变

12、量和标号的类型属性分别有哪几种? 3种属性段、偏移及类型。对于标号:段(CS)、偏移、类型(near、far)对于变量:段、偏移、类型()5. 什么是表达式?表达式的优先级顺序是如何排列的? 6. 汇编语言的上机过程是什么? 编辑程序、汇编程序、连接程序、调试程序7. 汇编语言源程序一般由几个段组成? 一般有数据段、代码段、堆栈段8. 汇编程序和连接程序的输入、输出文件有哪些?它们的作用是什么? 汇编程序:输入:asm文件 输出:obj文件连接程序:输入:obj文件(加上库文件和其他目标文件) 输出:exe 文件汇编程序主要作用:检查源程序;测出源程序中的语法错误并给出出错信息;产生源程序的目

13、标程序,并可给出列表。第五章循环与分支程序设计【大纲要求】1掌握汇编语言程序设计的基本步骤;2.熟练掌握顺序、分支和循环程序设计方法;3.掌握汇编语言程序常用的几种退出方法;4. DOS系统功能调用。【学习目标】了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。【思考题】1. 编制一个汇编语言程序分哪几步? 分析题意,确定算法 根据算法,画出程序框图 根据框图编写程序、上机调试程序2.

14、循环程序有哪两种基本结构?由几部分组成? DO_WHILE与 DO_UNTIL三部分:设置循环初始状态 循环体 循环控制部分3. 设计算法时对可能出现的边界情况如何考虑? 4. 如何设置逻辑尺? 练习程序:assume ds:datadata segment x dw 1,2,3,4,5,6,7,8 y dw 1,2,3,4,5,6,7,8 z dw 8 dup(?) logic_rule dw 5hdata endscode segment start: mov ax,data mov ds,ax mov bx,0 mov cx,8 mov si,0 mov dx,logic_rule ne

15、xt: mov bx,xsi mov bp,xsi shr dx,1 jc one add bx,bp jmp short result one: sub bx,bp result: mov zsi,bx add si,2 loop next mov ax,4c00h int 21hcode endsend start由于logic_rule 设为00000101,实现在对,相应进行 5. 起泡排序算法用汇编语言如何实现? ;冒泡排序;author JRH;2011.7.10assume ds:datadata segment a dw 1,4,2,5,7,9,6,3data endscode

16、 segmentstart: mov ax,data mov ds,ax mov cx,8 dec cx lop1: push cx mov dx,0 mov si,0 lop2: mov bp,asi cmp bp,asi+2 jnb go_on xchg bp,asi+2 mov asi,bp mov dx,1 ;标志位 go_on: add si,2 loop lop2 pop cx cmp dx,0 jz over loop lop1 over: mov ax,4c00h int 21hcode endsend start6. 如何理解数组排序算法中采用的折半查找法? 7. 如何使用跳

17、跃表法实现CASE结构? 例:;author JRH;2011.7.10assume ds:datadata segment branch_table dw rout1,rout2,rout3,over,over,over,over,over jump_rule dw 2h ; 00000010B ,这里“跳”rout2 .data endscode segmentstart: mov ax,data mov ds,ax lea bx,branch_table mov ax,jump_rule keep: shr ax,1 jnb not_yet;IF CF=0 jmp WORD ptr bx

18、 rout1: mov cx,1 jmp over rout2: mov cx,2 jmp over rout3: mov cx,3 jmp over not_yet:add bx,type branch_table jmp keep over: mov ax,4c00h int 21hcode endsend start第六章 子程序结构【大纲要求】1掌握子程序结构和参数传递;2熟练掌握嵌套子程序和递归子程序设计;3熟悉MASM提供的结构伪操作STRUC;4熟练运用子程序编程。【思考题】1. 子程序调用和返回时需要保护与恢复哪些寄存器?一般而言子程序用到的寄存器是应该保存的。但如果使用寄存器

19、在主程序与子程序之间传递参数的话,这种寄存器不用保存。2. 子程序的参数传送有几种方法? 寄存器、堆栈、地址表3. 伪操作STRUC的用途是什么? 使用STRUC可以把不同类型的数据放在同一数据结构里。 具体实现:4. 子程序嵌套与递归的区别?第七章 高级汇编语言技术【大纲要求】1.熟练掌握宏汇编;2.掌握重复汇编;3.熟悉条件汇编。【学习目标】了解并掌握宏汇编、重复汇编及不定重复汇编、条件汇编和高级语言结构编程技术。【思考题】1. 宏汇编技术与子程序技术相比有哪些优、缺点?它们的工作方式有何差别?宏汇编优点:多参数传送缺点:调用次数较多时占用较大空间,比较适用于代码较短且变元较多的情况工作方

20、式差别:在源程序中通过写宏名来调用宏,而子程序则通过call调用宏汇编是在汇编阶段展开,宏调用多少次就展开多少次,因而主程序长度会因此变长。而子程序是在程序执行时调用,它只占有自身大小的一个空间。2. 虚参与实参是否应一一对应?不一定。实参可以比虚参个数多,相应多的部分不做处理;实参也可以比虚参个数少,相应少的部分做“空”处理。3. 哑元表中的变元可以取何种值?4. &操作符及%操作符如何应用?必须掌握,见P263+5. 宏定义体内的程序段有标号怎么办?为防止展开后出现标号多重定义,使LOCAL操作。LOCAL操作只能用在宏定义体内,且必须是MACRO伪操作后的第一个语句。6. 宏定义允许嵌套

21、、递归调用吗?在宏定义中允许宏调用,其限制条件是:必须先定义后调用。同时,宏定义体内还可以包含宏定义。7. IRP与IRPC之间的区别?IRP的自变量表可以是常数、符号和字符串,重复次数由自变量表中的自变量个数确定。IRPC的自变量表必须是字符串,重复次数由该字符串中字符个数确定。例:irp reg, push reg endm irpc k, push k&X endm8. 条件汇编中有哪几种条件?IF IFE IF1 IF2 IFDEF IFNDEF IFB IFNB见P2819. 高级语言结构中有哪几种形式? 见P293题:编写一条宏指令CRLF,实现回车换行功能CRLF MACROMO

22、V DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HENDM第八章输入输出程序设计【大纲要求】1了解输入输出程序设计概念;2掌握查询方式传送数据程序设计;例如: WAIT: IN AL,72h TEST AL,80h JE WAIT注意:端口号如果在25665535则应放在DX中。查询方式优点:可以安排几个输入输出设备的优先次序,依次查询 缺点:CPU在外设没有准备好之前一直在查询等待,不能进行别的操作,效率低。3熟悉中断方式传送数据程序设计。中断优点:避免了因反复查询外部设备而浪费时间,提高CPU效率取与设置中断向量:;-这个应该不用掌握-

23、直接读写内存:例如int N的中断处理程序的 IP放在N*4 ,CS放在N*4+2。所以可以:设置:如我想将ip=200h,cs=0处开始的程序作为7号中断的处理程序则mov ax,0mov es,ax mov word ptr es:7*4,200hmov word ptr es:7*4+2,0取中断向量就很显然了,不再赘述。;-教材(沈书)是下面这个:运用DOS功能调用:同上例MOV AX,200HMOV DX,AXMOV AX,0MOV DS,AXAH=25hAL=7INT 21H 中断与子程序调用相比:中断还需保存FLAGS的内容。中断返回用IRET第九章 BIOS和DOS中断【大纲要

24、求】1 掌握键盘和显示器I/O的BIOS/DOS中断程序设计;键盘:BIOS键盘中断:INT 16HDOS键盘中断:INT 21H 功能:AH=1 从键盘读入一个字符并回显 AH=0AH 从键盘读入一串字符并把它存入用户定义的缓冲区中。DS:DX为缓冲区地址。 AH=0CH 清除缓冲区 AH=0BH 检验键盘状态 显示器:可以采用直接写显示储存单元的方法。BIOS显示器中断:P359DOS显示器中断:P3652 熟悉打印机I/O的BIOS/DOS中断程序设计。第十三章模块化程序设计【大纲要求】1掌握模块化程序设计的基本概念;把一个总体任务分成具有明确子任务的程序模块,分别编制调试后再将它们连接

25、在一起,形成一个完整的程序。这样的程序设计方法叫做模块化程序设计。2掌握段的完整定义和段的简化定义的用法;完整定义:name segment 定位类型 组合类型 类别简化定义:.CODE .STACK 大小 .DATA3掌握模块间的通信的编程方法; 多个模块之间的通信方法: (1)用外部符号定义共享参数和过程PUBLIC 与EXTRN的使用(2)利用common 4熟悉子程序库的建立和使用的编程方法;5汇编语言程序与高级语言程序的连接。直接插入法 _asm 将汇编语言程序作为外部子过程来调用。教材:80x86汇编语言程序设计沈美明 温冬婵参考资料:计算机系汇编语言教学大纲汇编语言复习 - Dr. Xingjun Zhang

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1