原创汇编考前终极攻略JRHWord下载.docx
- 文档编号:16437979
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:23.15KB
原创汇编考前终极攻略JRHWord下载.docx
《原创汇编考前终极攻略JRHWord下载.docx》由会员分享,可在线阅读,更多相关《原创汇编考前终极攻略JRHWord下载.docx(17页珍藏版)》请在冰豆网上搜索。
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
adw1,4,2,5,7,9,6,3
start:
movcx,8
deccx
lop1:
pushcx
movdx,0
lop2:
movbp,a[si]
cmpbp,a[si+2]
jnbgo_on
xchgbp,a[si+2]
mova[si],bp
movdx,1;
标志位
go_on:
looplop2
popcx
cmpdx,0
jzover
looplop1
over:
●6.如何理解数组排序算法中采用的折半查找法?
7.如何使用跳跃表法实现CASE结构?
例:
branch_tabledwrout1,rout2,rout3,over,over,over,over,over
jump_ruledw2h;
00000010B,这里“跳”rout2.
leabx,branch_table
movax,jump_rule
keep:
shrax,1
jnbnot_yet;
IFCF=0
jmpWORDptr[bx]
rout1:
movcx,1
jmpover
rout2:
movcx,2
rout3:
movcx,3
not_yet:
addbx,typebranch_table
jmpkeep
第六章子程序结构
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,<
AX,BX,CX>
pushreg
endm
irpck,<
ABC>
pushk&
X
8.条件汇编中有哪几种条件?
IFIFEIF1IF2IFDEFIFNDEFIFB<
argument>
IFNB<
见P281
9.高级语言结构中有哪几种形式?
见P293
题:
编写一条宏指令CRLF,实现回车换行功能
CRLFMACRO
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
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
[7*4+2],0
取中断向量就很显然了,不再赘述。
-----------------------------------------------------------------------------------------------------
教材(沈书)是下面这个:
﹡运用DOS功能调用:
同上例
MOVAX,200H
MOVDX,AX
MOVAX,0
MOVDS,AX
AH=25h
AL=7
INT21H
中断与子程序调用相比:
中断还需保存FLAGS的内容。
中断返回用IRET
第九章
BIOS和DOS中断
掌握键盘和显示器I/O的BIOS/DOS中断程序设计;
键盘:
BIOS键盘中断:
INT16H
DOS键盘中断:
功能:
AH=1从键盘读入一个字符并回显
AH=0AH从键盘读入一串字符并把它存入用户定义的缓冲区中。
DX为缓冲区地址。
AH=0CH清除缓冲区
AH=0BH检验键盘状态
显示器:
可以采用直接写显示储存单元的方法。
BIOS显示器中断:
P359
DOS显示器中断:
P365
熟悉打印机I/O的BIOS/DOS中断程序设计。
第十三章
模块化程序设计
1.掌握模块化程序设计的基本概念;
把一个总体任务分成具有明确子任务的程序模块,分别编制调试后再将它们连接在一起,形成一个完整的程序。
这样的程序设计方法叫做模块化程序设计。
2.掌握段的完整定义和段的简化定义的用法;
完整定义:
namesegment定位类型组合类型类别
简化定义:
.CODE
.STACK[大小]
.DATA
3.掌握模块间的通信的编程方法;
多个模块之间的通信方法:
(1)用外部符号定义共享参数和过程
PUBLIC与EXTRN的使用
(2)利用common
●4.熟悉子程序库的建立和使用的编程方法;
5.汇编语言程序与高级语言程序的连接。
直接插入法_asm
将汇编语言程序作为外部子过程来调用。
教材:
《80x86汇编语言程序设计》沈美明温冬婵
参考资料:
计算机系汇编语言教学大纲
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 原创 汇编 考前 终极 攻略 JRH