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

上传人:b****6 文档编号:8227427 上传时间:2023-01-30 格式:DOCX 页数:16 大小:23.36KB
下载 相关 举报
原创汇编考前终极攻略JRH.docx_第1页
第1页 / 共16页
原创汇编考前终极攻略JRH.docx_第2页
第2页 / 共16页
原创汇编考前终极攻略JRH.docx_第3页
第3页 / 共16页
原创汇编考前终极攻略JRH.docx_第4页
第4页 / 共16页
原创汇编考前终极攻略JRH.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

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

《原创汇编考前终极攻略JRH.docx》由会员分享,可在线阅读,更多相关《原创汇编考前终极攻略JRH.docx(16页珍藏版)》请在冰豆网上搜索。

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

原创汇编考前终极攻略JRH

Author:

JRHfromXJTUCS092011-7-10

汇编语言考前总结

第一章基础知识

【大纲要求】

1.掌握常用的各种进制数的表示、转换规则和运算;

2.掌握带符号数的码制表示方法及其补码运算;

3.熟悉数据的表示范围;

4.了解计算机存取信息的基本数据类型;

5.了解计算机中字符的表示;

6.熟悉几种基本的逻辑运算;

7.什么叫汇编语言。

【思考题】

1.计算机内部是采用什么计数制来表示数和信息的?

二进制

2.十进制数转换为二进制数有几种方法?

降冪法、除法

3.二进制数和十六进制数是如何相互转换的?

二进制到十六进制:

从低到高四位一组,直接用十六进制数表示。

4.计算机中如何表示正负数的?

原码、反码、补码

●5.计算机中的整数有几种表示方法?

最常用的是哪一种码制?

 

6.基本的逻辑运算包括哪几种运算?

与、或、非、异或

7.求补的运算规则是什么?

除符号位,按位取反最后加一

8.计算机中是采用什么代码来表示字符的?

ASCII码

第2章80X86计算机组织

【大纲要求】

1.熟悉计算机系统的组成;

2.熟练掌握8086/8088CPU的寄存器组;

3.掌握80X86CPU的寄存器组;

4.掌握存储器地址的分段表示及其物理地址的计算;

5.熟悉段的引用规定。

1.微计算机系统一般包括哪两部分?

硬件和软件

2.8086微处理器主要由哪几部分组成?

它们的功能是什么?

算术逻辑部件ALU(arithmeticlogicunit):

进行算术和逻辑运算。

控制逻辑:

负责全机的控制工作。

工作寄存器:

相当于运算器中的一个储存单元,存放计算过程中所需要或所得到的各种信息(地址、数据、中间结果)

3.一个字节和一个字分别由几个二进制位组成?

8位16位

●4.在Intel系列微型机中是如何编址的?

5.一个字节和一个字在存储器中是如何存储的?

字节:

8bit存放一个字节字:

低位字节存入低地址,高位字节存入高地址

6.字单元的地址是偶数或是奇数时,访问存储器有什么不同?

字单元的地址用其低位地址表示,因为以偶地址访问(读/写)存储器,,一次读一个字节长度。

如果字单元地址是偶数,那么访问一个字只需一次,而如果字单元地址是奇数,访问一个字序两次。

7.8086微型机可以访问的最大存储空间是多少?

应用几位地址来表示?

1M20位地址

8.在8086微机中,如何提供20位的地址?

如何形成物理地址?

储存器采用分段管理,一个内存单元地址由段基址:

偏移量两个逻辑地址来描述。

物理地址=10H×段寄存器+偏移地址

9.8086微机中,存储器空间可分为几种逻辑段?

每段的可寻址空间是多大?

段地址存放在哪些寄存器中?

4种。

64K。

代码段CS寄存器、数据段DS寄存器、堆栈段SS寄存器、附加段ES寄存器

10.CPU中有哪几类寄存器,它们各自的专门用途是什么?

数据寄存器:

AX:

累加器,乘除指令存放操作数,I/O指令使用其与外设传送信息

BX:

通用,常用作基址寄存器

CX:

计数器(移位指令、循环指令、传处理指令)

DX:

双字长运算(和AX组合)存放高位字,I/O操作存放I/O端口地址(对256~65535号端口读写时用)。

指针及变址寄存器:

SP:

存放当前堆栈栈顶偏移量,总是和SS堆栈寄存器配合

BP:

存放地址偏移量或数据,缺省和SS配合

DI:

存放串数据的目的地址偏移量(或数据)若存放偏移量时,缺省情况与DS配合。

SI:

存放串数据的原地址偏移量(或数据)若存放偏移量时,缺省情况与DS配合

控制寄存器:

IP:

存放代码段中的指令地址偏移量,始终指向下一条即将执行的指令的首地址,控制器根据指令字长自动增加

FLAGES

段寄存器:

CS:

存放当前正在运行的程序代码段基地址

DS:

指定当前运行程序所使用的数据段基地址

SS:

指定堆栈段位置,存放堆栈段的基地址

ES:

指定当前运行程序所使用的附加数据段基地址

11.条件码标志和控制标志各包含几位?

它们每位所表示的意义是什么?

条件码标志位用于记录程序运行结果的状态信息,共6位:

OF溢出标志

SF符号标志

ZF零标志

CF进位标志

AF辅助进位标志

PF奇偶标志

控制标志位控制处理器的操作,要通过专门的指令才能使控制标志位变化。

DF方向标志

IF中断标志

TF陷阱标志

12.什么是DOS和BIOS功能调用?

第三章80x86的指令系统和寻址方式

●1.什么是指令和指令系统?

指令在什么时候由哪部分来执行?

指令:

指令系统:

一组指令集。

计算机所能执行的所有指令的集合就是指令系统。

算术逻辑单元执行。

2.8086汇编语言指令由几部分组成?

各部分的作用是什么?

操作码字段:

指示计算机所要做的操作

操作数字段:

指出在指令操作过程中所需要的操作数

3.8086汇编语言指令可以有几个操作数?

指令中指定的操作数可能存放在哪里?

零地址指令:

ret

一地址指令:

incax

二地址指令:

movax,[2000h]

三地址指令:

很少用

存放在:

指令中、寄存器中、内存单元中、I/O接口寄存器中

4.什么是寻址方式?

8086汇编语言提供了几种寻址方式?

1.(太哲学了!

2.(这样的问题很×疼)

寻址方式实际上非常之容易:

记住四个寄存器:

BX,BP;

DI,SI;

可以

单独使用如MOVAX,[BX]MOVAX,[SI]

组合使用,但只能BX,BP中的一个和DI,SI中的一个搭配如MOVAX,[BX+SI]

而MOVAX,[BX+BP]及MOVAX,[DI+SI]是错误的!

当然可以加常数如MOVAX,[BX+SI+5]

知道这些后自己再对应其名字吧,什么“基址变址”什么×××.会用就行。

5.各种寻址方式所确定的有效地址是什么?

偏移地址

6.在存储器寻址方式中,为什么有时候要使用段跨越前缀?

段跨越前缀用以指定段寄存器

7.8086机器语言指令由哪几个字节组成?

为什么说汇编语言指令与机器指令是一一对应的?

8086机器语言指令是多字节指令,一条指令可以由1~7个字节组成。

具体见P49

8.8086的指令系统按功能可分为几组?

数据传送指令,算术指令,逻辑指令,传处理指令,控制转移指令。

9.每条指令的功能、助记符、所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。

这个得好好看,看书吧。

第四章汇编语言程序格式

【大纲要求】

1.了解机器语言和汇编语言的基本概念;

机器语言:

汇编语言:

2.掌握汇编语言语句的种类;

指令、伪操作(也叫伪指令)和宏指令

3.掌握常用的伪指令;

处理器选择伪操作:

.8086

段定义伪操作:

完整段定义伪操作

简化段定义伪操作

数据定义及储存伪操作:

DB、DW、DD、?

、DUP、LABLE

表达式赋值伪操作:

EQU

地址计数器与对准伪操作:

$:

指令中--当前所在汇编的指令的首地址;伪操作参数字段—地址计数器当前值

ORG:

设置当前地址计数器的值

应用例:

BUFFERLABELBYTE

ORG$+8

相当于:

BUFFERDB8DUP(?

EVEN:

使下一个变量或地址开始于偶地址

ALIGN:

保证双字数组边界从4的倍数开始

基数控制伪操作:

.RADIXexpression

4.掌握汇编语言语句的格式;

名字操作操作数注释

5.熟悉汇编语言程序的上机过程。

编辑程序、汇编程序、连接程序、调试程序

【学习目标】

了解编辑程序、汇编程序、连接程序的功能及其输入、输出文件的类型;

编辑程序文本文件->asm汇编程序->obj与lst连接程序->exe

●了解汇编语言源程序的格式;

●熟练掌握并运用段定义伪指令和数据定义及存储器分伪指令;

●熟悉数值表达式书写规范;

学会使用DEBUG调试程序

一些命令:

DTUR等等

【思考题】:

1.建立并运行一个汇编语言程序有几个操作步骤?

编辑程序、汇编程序、连接程序、执行程序

2.指令和伪指令的区别是什么?

指令在程序运用期间会被计算机执行,而伪指令是在汇编程序对源程序进行汇编时处理的操作。

3.在汇编语言程序中,段定义伪指令和数据定义伪指令起什么作用?

(很哲学)段定义为指令作用:

数据定义为指令作用:

4.变量和标号的类型属性分别有哪几种?

3种属性

段、偏移及类型。

对于标号:

段(CS)、偏移、类型(near、far)

对于变量:

段、偏移、类型()

●5.什么是表达式?

表达式的优先级顺序是如何排列的?

6.汇编语言的上机过程是什么?

编辑程序、汇编程序、连接程序、调试程序

7.汇编语言源程序一般由几个段组成?

一般有数据段、代码段、堆栈段

●8.汇编程序和连接程序的输入、输出文件有哪些?

它们的作用是什么?

汇编程序:

输入:

asm文件输出:

obj文件

连接程序:

输入:

obj文件(加上库文件和其他目标文件)输出:

exe文件

汇编程序主要作用:

检查源程序;测出源程序中的语法错误并给出出错信息;产生源程序的目标程序,并可给出列表。

第五章循环与分支程序设计

【大纲要求】

1.掌握汇编语言程序设计的基本步骤;

2. 熟练掌握顺序、分支和循环程序设计方法;

3. 掌握汇编语言程序常用的几种退出方法;

4.DOS系统功能调用。

【学习目标】

了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。

掌握起泡排序算法这种多重循环程序设计中的常用方法。

交换标志位的设置在此算法中更能提高效率。

学会在数组排序算法中采用折半查找法来提高查找效率。

学会使用跳跃表法实现CASE结构。

【思考题】

1.编制一个汇编语言程序分哪几步?

分析题意,确定算法

根据算法,画出程序框图

根据框图编写程序、

上机调试程序

2.循环程序有哪两种基本结构?

由几部分组成?

DO_WHILE与DO_UNTIL

三部分:

设置循环初始状态

循环体

循环控制部分

●3.设计算法时对可能出现的边界情况如何考虑?

4.如何设置逻辑尺?

练习程序:

assumeds:

data

datasegment

xdw1,2,3,4,5,6,7,8

ydw1,2,3,4,5,6,7,8

zdw8dup(?

logic_ruledw5h

dataends

codesegment

start:

movax,data

movds,ax

movbx,0

movcx,8

movsi,0

movdx,logic_rule

next:

movbx,x[si]

movbp,x[si]

shrdx,1

jcone

addbx,bp

jmpshortresult

one:

subbx,bp

result:

movz[si],bx

addsi,2

loopnext

movax,4c00h

int21h

codeends

endstart

由于logic_rule设为00000101,实现在对x,y相应进行—+—+++++

5.起泡排序算法用汇编语言如何实现?

;冒泡排序

;authorJRH

;2011.7.10

assumeds:

data

datasegment

adw1,4,2,5,7,9,6,3

dataends

codesegment

start:

movax,data

movds,ax

movcx,8

deccx

lop1:

pushcx

movdx,0

movsi,0

lop2:

movbp,a[si]

cmpbp,a[si+2]

jnbgo_on

xchgbp,a[si+2]

mova[si],bp

movdx,1;标志位

go_on:

addsi,2

looplop2

popcx

cmpdx,0

jzover

looplop1

over:

movax,4c00h

int21h

codeends

endstart

●6.如何理解数组排序算法中采用的折半查找法?

7.如何使用跳跃表法实现CASE结构?

例:

;authorJRH

;2011.7.10

assumeds:

data

datasegment

branch_tabledwrout1,rout2,rout3,over,over,over,over,over

jump_ruledw2h;00000010B,这里“跳”rout2.

dataends

codesegment

start:

movax,data

movds,ax

leabx,branch_table

movax,jump_rule

keep:

shrax,1

jnbnot_yet;IFCF=0

jmpWORDptr[bx]

rout1:

movcx,1

jmpover

rout2:

movcx,2

jmpover

rout3:

movcx,3

jmpover

not_yet:

addbx,typebranch_table

jmpkeep

over:

movax,4c00h

int21h

codeends

endstart

第六章子程序结构

【大纲要求】

1.掌握子程序结构和参数传递;

2.熟练掌握嵌套子程序和递归子程序设计;

3.熟悉MASM提供的结构伪操作STRUC;

4.熟练运用子程序编程。

【思考题】

1.子程序调用和返回时需要保护与恢复哪些寄存器?

一般而言子程序用到的寄存器是应该保存的。

但如果使用寄存器在主程序与子程序之间传递参数的话,这种寄存器不用保存。

2.子程序的参数传送有几种方法?

寄存器、堆栈、地址表

3.伪操作STRUC的用途是什么?

使用STRUC可以把不同类型的数据放在同一数据结构里。

具体实现:

4.子程序嵌套与递归的区别?

第七章高级汇编语言技术

【大纲要求】

1.熟练掌握宏汇编;

2..掌握重复汇编;

3.熟悉条件汇编。

【学习目标】

了解并掌握宏汇编、重复汇编及不定重复汇编、条件汇

编和高级语言结构编程技术。

【思考题】

1.宏汇编技术与子程序技术相比有哪些优、缺点?

它们的工作方式有何差别?

宏汇编

优点:

多参数传送

缺点:

调用次数较多时占用较大空间,比较适用于代码较短且变元较多的情况

工作方式差别:

在源程序中通过写宏名来调用宏,而子程序则通过call调用

宏汇编是在汇编阶段展开,宏调用多少次就展开多少次,因而主程序长度会因此变长。

而子程序是在程序执行时调用,它只占有自身大小的一个空间。

2.虚参与实参是否应一一对应?

不一定。

实参可以比虚参个数多,相应多的部分不做处理;实参也可以比虚参个数少,相应少的部分做“空”处理。

3.哑元表中的变元可以取何种值?

4.&操作符及%操作符如何应用?

必须掌握,见P263+

5.宏定义体内的程序段有标号怎么办?

为防止展开后出现标号多重定义,使LOCAL操作。

LOCAL操作只能用在宏定义体内,且必须是MACRO伪操作后的第一个语句。

●6.宏定义允许嵌套、递归调用吗?

在宏定义中允许宏调用,其限制条件是:

必须先定义后调用。

同时,宏定义体内还可以包含宏定义。

7.IRP与IRPC之间的区别?

IRP的自变量表可以是常数、符号和字符串,重复次数由自变量表中的自变量个数确定。

IRPC的自变量表必须是字符串,重复次数由该字符串中字符个数确定。

例:

irpreg,

pushreg

endm

irpck,

pushk&X

endm

8.条件汇编中有哪几种条件?

IFIFEIF1IF2IFDEFIFNDEFIFBIFNB

见P281

9.高级语言结构中有哪几种形式?

见P293

题:

编写一条宏指令CRLF,实现回车换行功能

CRLFMACRO

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

ENDM

第八章  输入输出程序设计

【大纲要求】

1.了解输入输出程序设计概念;

2.掌握查询方式传送数据程序设计;

例如:

WAIT:

INAL,72h

TESTAL,80h

JEWAIT

注意:

端口号如果在256~65535则应放在DX中。

查询方式优点:

可以安排几个输入输出设备的优先次序,依次查询

缺点:

CPU在外设没有准备好之前一直在查询等待,不能进行别的操作,效率低。

3.熟悉中断方式传送数据程序设计。

中断优点:

避免了因反复查询外部设备而浪费时间,提高CPU效率

取与设置中断向量:

;----------------------------这个应该不用掌握------------------------------------------------

﹡直接读写内存:

例如intN的中断处理程序的IP放在N*4,CS放在N*4+2。

所以可以:

设置:

如我想将ip=200h,cs=0处开始的程序作为7号中断的处理程序则

movax,0

moves,ax

movwordptres:

[7*4],200h

movwordptres:

[7*4+2],0

取中断向量就很显然了,不再赘述。

;-----------------------------------------------------------------------------------------------------

教材(沈书)是下面这个:

﹡运用DOS功能调用:

同上例

MOVAX,200H

MOVDX,AX

MOVAX,0

MOVDS,AX

AH=25h

AL=7

INT21H

中断与子程序调用相比:

中断还需保存FLAGS的内容。

中断返回用IRET

第九章 BIOS和DOS中断

【大纲要求】

1.掌握键盘和显示器I/O的BIOS/DOS中断程序设计;

键盘:

BIOS键盘中断:

INT16H

DOS键盘中断:

INT21H

功能:

AH=1从键盘读入一个字符并回显

AH=0AH从键盘读入一串字符并把它存入用户定义的缓冲区中。

DS:

DX为缓冲区地址。

AH=0CH清除缓冲区

AH=0BH检验键盘状态

显示器:

可以采用直接写显示储存单元的方法。

BIOS显示器中断:

P359

DOS显示器中断:

P365

2.熟悉打印机I/O的BIOS/DOS中断程序设计。

第十三章  模块化程序设计

【大纲要求】

1.掌握模块化程序设计的基本概念;

把一个总体任务分成具有明确子任务的程序模块,分别编制调试后再将它们连接在一起,形成一个完整的程序。

这样的程序设计方法叫做模块化程序设计。

2.掌握段的完整定义和段的简化定义的用法;

完整定义:

namesegment定位类型组合类型类别

简化定义:

.CODE

.STACK[大小]

.DATA

3.掌握模块间的通信的编程方法;

多个模块之间的通信方法:

(1)用外部符号定义共享参数和过程

PUBLIC与EXTRN的使用

(2)利用common

●4.熟悉子程序库的建立和使用的编程方法;

5.汇编语言程序与高级语言程序的连接。

直接插入法_asm

将汇编语言程序作为外部子过程来调用。

教材:

《80x86汇编语言程序设计》沈美明温冬婵

参考资料:

计算机系汇编语言教学大纲

汇编语言复习----Dr.XingjunZhang

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

当前位置:首页 > 小学教育 > 语文

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

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