当前位置:文档之家› 汇编语言复习资料(附答案)

汇编语言复习资料(附答案)

汇编语言复习资料(附答案)
汇编语言复习资料(附答案)

汇编语言复习资料

第1、2章微处理器的结构和存储器组成

1、程序设计语言分哪三类?【机器语言、汇编语言和高级语言】

2、二进制数转十进制、十六制数、十进制数转二进制数、十六制数转十进数。

3、十进制数的压缩和非压缩BCD码表示方法。

4、计算机显示、打印字符的编码一般采用什么码。【ASCⅡ码】

5、8086微处理器的功能结构分哪两大部件。

【总线接口单元BIU和执行单元EU;BIU负责与存储器接口,EU部分负责指令的执行。】

6、8086有哪些通用寄存器和段寄存器?哪些可即做8位又可以作16位通用寄存器?哪些在指令中可以装偏移地址?【通用寄存器:八位:AL、AH、BL、BH、CL、CH、DL、DH

十六位:AX、BX、CX、DX、DI、SI、SP、BP

三十二位:EAX、EBX、ECX、EDX、EDI、ESI、ESP、EBP

既可做八位又可作十六位:AX、BX、CX、DX 段寄存器:SS、CS、DS、ES、FS 】

7、掌握实模式下的内存分段管理方法。

8、堆栈的基本操作有哪两种,操作原则是什么。对堆栈完成进出栈操作后,堆栈栈顶指针SP如何改变。

9、微机的总线按功能分为哪三大总线。【地址总线AB、数据总线DB、控制总线CB 】

10、8086微机内存是分段管理的,这样存储器单元的逻辑地址分为哪两个两部分,计算为物理地址公式是什么?【逻辑地址分为段基址和偏移量。物理地址=10H*段基址+偏移量】

11、标志寄存器中有哪些状态标志位和控制标志位,中文名称和符号分别为什么?有什么作用?

【状态标志位:(1)辅助进位标志AF 这个标志用于十进制算术运算指令中。

( 2) 进位标志CF 这个标志主要用于多字节数的加、减法运算。

(3)溢出标志OF 多用于算术运算中。

(4) 符号标志SF 它的值与运算结果的最高位相同。

(5) 奇偶标志PF 这个标志可用于检查在数据传送过程中是否发生错误。

(6) 零标志ZF 若运算的结果为0,则ZF=1,否则ZF=0。

控制标志位:(1)方向标志DF 若用指令置DF=1,则引起串操作指令为自动减量指令,也就是从高地

址到低地址处理字符串;若使DF=0,则串操作指令就为自动增量指令,

也就是从低地址到高地址处理字符串。

(2)中断允许标志IF 若指令中置IF=1,则允许CPU去接收外部的可屏蔽中断请求;若

使IF=0,则屏蔽上述的中断请求,对内部产生的中断不起作用。

(3)追踪标志TF 置TF标志,使处理进入单步方式,以便于调试。在这个方式中,CPU

在每条指令执行以后,产生一个内部中断,允许程序在每条指令执行以

后进行检查。】

第3章寻址方式和指令系统

1、汇编语言指令中寻址方式有哪些,能正确识别每种寻址方式?【P49 】

重点掌握立即、寄存器、直接、寄存器间接、基址、变址、基址加变址、带位移基址变址(相对)寻址方式。【立即寻址:源操作数是立即数寄存器寻址:操作数放在寄存器中直接寻址:操作数在内存中,内存地址直接告诉了寄存器间接寻址:操作数在存储器中,但操作数地址的偏移量在寄存器中

基址寻址:由指定的基址寄存器内容,加上指令中给定的位移量作为操作数的有效地址。

EA=[基址寄存器+位移量]

变址寻址:由变址SI、DI寄存器内容,加上指令中给定的位移量作为操作数的有效地址。

EA=[变址寄存器+位移量]

基址加变址寻址:由指令中的基址寄存器内容和变址寄存器内容相加得到操作数的有效地址。

EA=[基址寄存器+变址寄存器]

带位移的基址加变址寻址:操作数在内存中,由变址寄存器、基址寄存器和位移量相加得到内存有效地址。EA=基址寄存器+变址寄存器+位移量

2、熟悉讲过的每条指令的功能。【P58 】

3、基本串操作指令有哪五条?助记符是什么?【串传送指令MOVSB 串装入指令LODSB 串存储指令STOSB串比较指令CMPSB 串扫描指令SCASB 】

4、8086算术运算指令有哪些?【P65 】DAA 和AAA指令的用法及区别。【P75 】

【AAA:非压缩BCD码加法调整指令;对AL中的加法结果调整调整规则:若(AL&0FH)>9或标志AF=1,则AL=AL+6,AH=AH+1,AF=1,CF=AF,AL=AL&0FH DAA:压缩BCD码加法十进制调整指令调整规则:若(AL&0FH)>9或标志AF=1,则AL=AL+6,AF=1;若(AL&0F0H)>90H或标志CF=1,则AL=AL+60H,CF=1 】5、AND、OR、XOR、NOT指令主要作用是什么?哪些是对指定位清0、置1、取反?【P79 】

【AND主要用于:将指定位清0,其余位不变。要清0的位与0相与,不变的位与1相与。

OR主要用于:将指定位置1,其余位不变。要置1的位与1相或,不变的位与0相或

XOR主要用于:A.将指定位取反,其余位不变。要取反的位与1相异或,不变的位与0相异或。

B.异或指令还有对寄存器清0的作用,自已与自已相异或,可达到清0目的。

总结:给某一个寄存器清0的方法,共有4种:(以AX为例)

(1)MOV AX,0 (2)SUB AX,AX (3)AND AX,0 (4)XOR AX,AX

6、SAL 、SHR指令的用法。(移一位和移多位的区别)。【P83 】

7、ADD和ADC,SUB和SBB指令的区别及用法。【P65 】

【ADD:加法指令SUB:减法指令ADC:带进位的加法指令SBB:带进位的减法指令】8、指令TEST 的用法及作用举例。(81页)

【TEST:逻辑测试指令格式:TEST OPRD1,OPRD2

功能:完成两个操作数按位进行逻辑与运算,结果反映在标志位上,不保留结果。

应用场合:用于不希望改变原有操作数的情况下,检测某一位或某几位的状态。

方法:把测试的数据与某一检测常数相与,结果为零(即ZF=1),则测试位为0,否则为1。

例:若要测试AL的最低位是否为1,可用

TEST AL,01H

JNZ NEXT

AL D7 D6 D5 D4 D3 D2 D1 D0

∧0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 D0

例:若要测试BX的最高位是否为0,可用

TEST BX,1000H

JZ NEXT

..BX=1001001101001110

∧ 1 000000000000000

1 000000000 000000】

9、DEBUG中各操作命令的作用。

【(1)退出DEBUG命令Q 格式:Q 功能:退出DEBUG,返回DOS。

(2)显示存储单元命令D 格式:D[存储单元地址] 或D[存储单元地址范围]

(3)修改存储单元命令E 格式1:E[存储单元地址] [替换内容]格式2:E [存储单元地址]

(4)检查和修改寄存器内容的命令R

格式1:R 功能:显示CPU内所有寄存器内容和标志位状态。

格式2:R 寄存名功能:显示和修改某个寄存器的内容。

例:R AX 如不修改则按回车键,否则键入要修改的内容。

格式3:RF 功能:显示和修改标志位状态。

(5)运行命令G 格式:G[=起始地址1][地址2…..]

功能:从起始地址开始运行程序。如不指定则从当前的CS:IP开始运行。

(6)跟踪命令T 格式1:T[=[起始地址]] 功能:从指定起始地址开始执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定起始地址则从当前的CS:IP开始运行。

格式2:T[=[起始地址][n]] 功能:从指定起始地址开始执行n条指令停下来。

(7)汇编命令A 格式:A[起始地址] 功能:允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区。

(8)反汇编命令U 格式1:U[起始地址] 功能:从起始地址开始反汇编32个字节。如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

格式2:U[起始范围] 功能:对指定范围的存储单元进行反汇编。

(9)命名命令N 格式:N 文件名[文件名] 功能:该命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入或存盘。(10)装入命令L 格式:L[起始地址] 功能:装入已在CS:5CH中格式化了的文件控制块所指定的文件。如未指定起始地址,且装入的为EXE程序,则装入到CS:0000开始的存储

区中,如果装入的为COM结构程序,则装入到CS:0100开始的存储区中。

(11)写命令W 格式:W [起始地址] 功能:将起始地址开始的数据写入由CS:5CH处的文件控制块所指定的文件中。如果未指定地址则数据从CS:0100开始。

11、指令XCHR和指令XLAT指令的区别。【P63】

【指令LEA 是装入有效地址指令、指令ADC是带进位的加法指令、

指令SBB是带进位的减法指令、指令CMP是比较指令、指令MUL是无符号乘法指令、指令DIV是无符号除法指令、指令XOR是异或指令、指令CLD标志DF清0指令、

指令STD是标志DF置1指令、指令LOOP是重复控制指令。】

12、指令REP MOVSB功能,指令REPZ CMPSB 功能是。

【指令REP MOVSB功能重复执行后面的串传送指令,直到不满足重复条件(C X≠0)

指令REPZ CMPSB 功能是重复执行后面的串比较指令,直到不满足重复条件(C X≠0且ZF=1)】13、MOV AX ,[BX][DI] 是将源操作数所指内存字单元里的值送到AX中,

LEA AX ,[BX][DI] 是将源操作数指出的地址送到AX中。

第4章伪指令、源程序结构

1、汇编语言的上机操作过程分为哪四个步骤。【编辑——汇编——连接——运行】

2、标号用来表示指令地址,不可用指令的助记符(关键字)、伪指令(保留字)。标号在同一程序中必须是唯一的。

3、ASSUME语句的功能是什么。【ASSUME是保留字,指示段寄存器对应前面定义的哪个段。】

4、8086汇编语言源程序中语句的结构是由哪四个部分组成。EXE结构的源程序一般包括哪四个段。

【标号和名字、助记符和定义符、操作数、注释

EXE结构的源程序一般包括:数据段、堆栈段、附加段、代码段四段】

5、变量和标号有哪三个属性。标号的类型属性是定义(FAR)和近(NEAR)。

【变量和标号的属性一样,都有段属性(SEGMENT)、偏移属性(OFFSET)、类型属性(TYPE)】6、回送(分析)操作符(seg,offset,length,size type)、属性修改(合成)(ptr,short)操作符各有哪些,使用方法?【分析操作符:SEG、OFFSET、TYPE、SIZE、LENGTH 合成操作符:PTR、THIS 】【P85】

7、汇编语言一般包括哪三类语句。【指令语句、伪指令语句、宏指令语句】

8、生成COM文件的源程序其程序结构的两个特点是:

1. 程序中第一条可执行语句应从代码段的0100H单元开始存放;

2.整个程序只有一个段。

将.EXE 文件转换成.COM文件的命令是:EXE2BIN 。

9、段寄存器值的装入。

10、源程序的扩展名【.ASM 】,目标文件的扩展名【.OBJ】,可执行文件【.EXE】,命令文件的扩展名【.COM】

11、根据数据定义语句,画出存储空间及内容分配图。如:

T1 DB ‘ABC’

T2 DW 1234H,677AH

T3 DB ‘BYTE’,-1,2 DUP(0,3 DUP(1))

12、结束程序返回操作系统的两种主要方法(常用的和标准序方法)。

第5、6、7、8章

1、汇编语言结构程序有哪三种基本结构。【顺序结构、分支结构和循环结构】

2、指令JMP、JZ、JNZ、JC、JNC、JA、JB、JG、JL、JS的区别。

在循环控制指令隐含用哪个寄存器作循环次数计数器。重点掌握LOOP的用法。【P150】

3、循环程序一般由哪四部分组成。基本结构形式为哪两种形式。【初始化部分、循环体、修改部分、控制部分。基本结构形式:“先执行,后判断”结构和“先判断,后执行”结构】

4、掌握什么是段内,段间及直接和间接转移以及表示方法。【P150】

5、在串操作指令中,哪些寄存器的值会自动修改,操作数地址的改变方式,与FLAG的哪个标志位有关?它为0或1时,地址如何修改。掌握串操作指令前的重复前缀有哪些,作用各为什么?注意与重复汇编伪指令的区别。【P173】

6、在子程序设计中,一般通过哪五种方法传递参数。【通过寄存器传递、用存储单元传递、通过堆栈传递】

7、什么是中断,中断源,中断矢量表,给出中断类型号后,如何得到中断服务子程序的入口地址。

如何把中断服务子程序的地址写入到中断矢量表中。【P305】

中断可分为两种:硬件(外部中断)和内部中断(软件)两种。8086可处理256种中断。

硬件中断又分为非屏蔽中断和可屏蔽中断。

内部中断又为分哪四种:除法出错,执行INTO,执行INT N,单步中断。

8、80X86可寻址8位、16位和32位I/O端口范围是多少字节?IN、OUT指令的用法(直接、DX间接)。

9、掌握I/O查询程序的编写。

10、I/O端口和内存的编址方式有统一编址和独立编址之分。各是什么管理方式?

11、DOS 功能调用的方法。掌握1号、2号、8号、9号、10号功能调用的使用方法和作用。【P311】

12、举例说明:DUP、PTR、PROC、MACRO、IRP、IRPC、REPT各操作符的含义和作用。

13、计算机接口电路有哪三个端口。【8位端口、16位端口、32位端口】

14、CPU与外设之间交换的信息有哪三种。【数据信息、状态信息以及控制信息】

15、宏与带参宏的定义方法,宏与子程序的比较,他们的共同点和不同点。

复习各章做过的作业包括评讲过的作业。

考试范围只限讲过的章节,第七、八章授课内容与教材内容有较大差别,结合课件复习。

编程题:1、子程序设计方法

2、显示程序的设计:如显示一位或两位十进制数,显示十六制数,显示一个字符串等

3、统计程序的设计:如统计数据区中,各分数段的人数。统计数据区中,奇偶数个数

统计字符串中,特征字符的个数,统计数据区中各数据累加和等

4、代码转换程序的设计:如二进制转ASCII码,数据高半字节和低半字节的交换等

改错:1、将下列汇编语言源程序中的10个错误改错。

DA TAS SEGMENT

STRBUF DB 100 OUP (?)

DA TA ENDS

STACK SEGMENT

DB 10 DUP (?)

STACK END

CODE SEGMEND

MAIN PROC FAR

START MOV AX,DATAS

MOV DS ,AX

MOV AL,34H

ADD AX,4FH

MOV CODE,AL

MOV AH,40H

INT 21H

START :ENDP

COD ENDS

END START

2、指出下列程序段中的一个错误,并改正。

1.CMP AL,-5

JB NEXT1

2.MOV AL,10

MOV BL,20

JA NEXT2

3.NEXT3:MOV CX,10

ADD AX,1

LOOP NEXT3

4.SUB1 PROC NEAR

PUSH AX

PUSH BX

ADD AX,BX

RET

SUB1 ENDP

5.MOV AX,1234H

SHL AX,4

6.MOV [SI],[1000]

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 ) 2.标号可以有两种类型属性.它们是( )和( ) 3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( ) 4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ). 5.循环程序通常由( )( )( )和循环结果外理四部分构成 6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT 7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( ) 8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( ) 9.分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量AYW( ) (2)双字变量AYD存放的地址指针送ES和SI( ) (3)变量AY2类型属性送AH( ) (4)不允许中断即关中断( ) (5)将字符串'HOW ARE YOU!'存入变量AYB( ) (6)子程序返回调用程序( ) (7)地址表达式AYY[4]的偏移地址送字变量ADDR( ) (8)AX的内容加1,要求不影响CF( ) (9)BX的内容加1,要求影响所有标志位( ) (10)若操作结果为零转向短号GOON( ) 二,单选题 1.IBM PC微机中,有符号数是用( )表示的 1.原码 2.补码 3.反码 4.BCD码 2.把汇编源程序变成代码程序的过程是( ) 1.编译 2.汇编 3.编辑 4.链接

最新汇编语言复习资料

1 汇编语言程序设计 2 DX:单项选择题 DU:多项选择题 TK:填空题 MC:名词解释 3 v JD:简答题 CXFX:程序分析题 CXTK:程序填空题 BC:编程题4 第1章:基础知识 5 1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。 DX 6 A、宏定义,宏调用 B、宏定义,宏展开 7 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 8 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中9 不可省略的项是( B )。 DX 10 A、名字项 B、操作项 C、操作数项 D、注释项 11 3、可屏蔽中断就是它的请求是否被CPU响应要受( IF )的控制。 DX 12 4、使用LINK连接命令,执行后可生成文件的扩展名为( EXE )。 DX 13 5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在堆栈段中,段14 地址在SS寄存器中。 TK 15 6、注释项用于说明程序段或是一条和几条指令的功能,一般用;(或分号) 表16 示注释的开始。 TK 17 7、DOS系统功能调用方式为:(1)置入口参数;(2)中断程序编号送AH寄存器后执18 行INT 21H。 TK 19 8、通常主程序和子程序间参数传送的方法有三种:用寄存器传递、用存储单元传递、20 用堆栈传递(顺序可调换)。 TK 21 9、中断是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该22 事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为中23 断源。 TK

24 10、在字符串操作指令中,DS∶SI指向源串,ES∶DI指向目的25 串。 TK 26 11、计算机系统通过接口与外围设备通信。 TK 27 12、键盘I/O、显示I/O和打印I/O分别对应16H、10H和 17H 28 号中断。 TK 29 13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。每个字的第一个字节为30 显示字符的ASCII码,第二个字节为显示字符的属性。 TK 31 14、简述上机运行汇编语言程序的过程。 JD 32 答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序33 代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。 34 15、简述程序中指令和伪指令的区别。 JD 35 答:能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。36 伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可37 加在汇编程序的任何地方,但它们并不产生机器指令。 38 16、十六进制数88H,可表示成下面几种形式,请找出错误的表示(④)。 DX 39 ①无符号十进制数136 40 ②带符号十进制数-120 41 ③压缩型BCD码十进制数88 42 ④ 8位二进制数-8的补码表示 43 17、指令指针寄存器是(IP )。 DX 44 18、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B) DX

汇编错误总结

1、test.asm(54):error A2000:Block nesting error、 说明:此错误信息通常见于一个段定义起始段名和末尾段名不一 致。说明:此错误信息通常见于一个段定义起始段名和末尾段 名不一致。修改:检查段定义,使段名前后保持一致。修改: 检查段定义,使段名前后保持一致。 2、test.asm(5):error A2005:Symbol is multidefined:DATA 说明:符号重复定义了。说明:此错误信息提示DATA符号 重复定义了。修改:重新设置。修改:将其中一个符号DATA 重新设置。 3、test.asm(7):error A2009:Symbol not defined:B9H、 说明:行指令出错,查看该指令,说明:此错误信息为 test.asm中第7行指令出错,查看该指令,源操作数为十六 进制数B9H。按规定以字母开始的十六进制数,应在其。按规 定以字母开始的十六进制数,以便汇编程序区分常数和符号。 前面加上数字0以便汇编程序区分常数和符号。另一种出错的 可能原因是程序中使用的符号变量没有定义。能原因是程序中 使用的符号变量没有定义。修改:修改:以0B9H取代B9H; 使用伪指令定义变量。;使用伪指令定义变量。 4、test.asm(11):error A2009:Symbol not defined:NO、 说明:说明:test.asm中第11行指令JLE no-count,符号 中使用了中折线,中,符号中使用了中折线,折线在汇编中是 作为减号,因此,没有定义。折线在汇编中是作为减号,因此,汇编提示标号NO没有定义。注意,汇编语言规定符号中可以 使用下划线。注意,汇编语言规定符号中可以使用下划线。修 改:修改:将no-count改为no_count。。 5、test.asm(28):error A2010:Syntax error、

汇编复习题1

《汇编语言程序设计》复习题 一、单项选择题 1、使计算机执行某种操作的命令是( B) A.宏指令 B.指令 C.伪指令 D.语句 2、换码指令的助记符是( A) A. XCHG B. LEA C. XLAT D. MOV 3、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B)。 A.AX,BX,CX,DX B.BX,BP,SI,DI C.SP,IP,BP,DX D.CS,DS,ES,SS 4、计算机能直接识别并执行的语言是( B) A.汇编语言 B.机器语言 C.高级语言 D.低级语言 5. 堆栈的工作方式是( D) A.先进先出 B.随机读写 C.只能读出,不能写入 D.后进先出 6、以下各个指令中正确的是( B )。 A. MOV CS, DX B. MOV DS, BP C. IN 20H,AL D. MOV AH, BX 8、已有汇编语句“VAR EQU 1220H”,则语句“mov AX, VAR”中源操作数的寻址方式为( B )。 A. 立即寻址 B. 直接寻址 C. 寄存器间接寻址 D. 基址寻址 9、与MOV BX,OFFSET VAR指令完全等效的指令是( D )。 A.MOV BX,VAR B.LDS BX,VAR C.LES BX,VAR D.LEA BX,VAR 10、指令INC一定不会修改的标志是( C )。 A. 溢出标志OF B. 符号标志SF C. 进位标志CF D. 奇偶标志PF 11、已知DS=2000H,ES=1000H, SI = 0800H,内存10880H开始的两个单元中存放5678H,内存20880H开始的两个单元中存放8765H,则语句“LEA BX,[SI+80H]”执行后BX的值为( C )。 A. 5678H B. 1000H C. 0880H D. 8765H 12、汇编结束语句有( C )种格式,为()。 A.1,END B.1,END 程序的启动地址标号 C.2,END和END 程序的启动地址标号D.以上都不正确 13、指令“CALL FAR PTR SUM”执行时将会向堆栈中顺次压入( B )。

高级语言、汇编语言及机器语言的区别

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。 低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。 高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。 高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。 机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统 它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编.

汇编语言复习题(附答案)

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课 后四、六章的答案,大家抓紧时间复习哦! 一、选择题 1. 把要执行的程序与库文件连接起来形成可执行文件的系统程序是(B )。 A. 汇编程序 B. 连接程序 C. 机器语言程序 D.源代码程序 2. 在8088/8086的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是 (C )。 A..SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 3. 为了使主机访问外设方便起见,外设中的每个寄存器给予一个(C )。 A.物理地址 B. 逻辑地址 C. 端口地址 D. 段地址 4. MOV AX, 3064H,该指令中源操作数采用的寻址方式是(A )。 A.立即 B. 直接 C. 寄存器相对 D. 寄存器间接 5. 换码指令的助记符是(C )。 A. XCHG B. LEAS C.XLAT D. MOV 6. 如果A> B (A、B有符号数)发生转移,应选择的条件转移指令是(JGE )。 7. 下列符号中,可用作标识符的是(C )。 A.MOV B.AX C.MSG1 D.1ABC 8. X DB 10H DUP (1 , 2)内存变量定义语句拥有了( A )个字节的存储空间。 A.20D B.10D C.20H D.10H 9. 当DF=0时,执行串操作指令MOVSB变址寄存器SI、DI的值将(C )。 A.不变 B. 减1 C. 加1 D. 无法确定 10. 如下指令可将AX寄存器内容改变的是(A )。 A. AND AX , BX B . TEST AX , BX C. CMP AX , BX D . XCHG AX , AX 11.16位CPU支持的I/O 地址范围是(D )。 A. 0~0FFFFFH B. 0~0FFFFH C. 0~0FFFH D. 0~0FFH 12. MUL CL指令实现的功能是(A )。 A.无符号乘法:AX AL X CL B.有符号乘法:AX AL X CL C.无符号乘法:DX AL X CL D .有符号乘法:DX AL X CL 13. DOS系统功能调用(INT 21H )中,显示字符串的功能号是(D )。 A.01H B.02H C.08H D. 09H 14. 在16位CPU读取指令时,需要用到的寄存器对是(C )。 A.SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 15. 下列指令中,源操作数(既第2操作数)属于基址加变址寻址方式是(B )。 A.MOV AX,23H B. MOV AX,[BX+SI] C.SUB AX,[BX] D. ADD AX,BX 16. 有内存变量定义语句:VAR DW 10 DUP(1 , 2), 1234H, VAR的属性TYPE LENGTH和

有答案 14-15-1 汇编语言复习资料

汇编语言复习资料 第一部分选择题 第一章基础知识 1.数组array在数据段的定义如下所示,在内存空间的存储值是什么,选出正确的一 项(B ) array db 1,‘1’,0AH,‘A’,-2 A、1H 1H 0AH 0AH 82h B、1H 31H 0AH 41H FEH C、1 1 0A 0A 12h D、31H 31H 41H 41H 02h 2.debug命令中显示内存单元内容的命令是( B ) A、a B、d C、e D、r 3.debug命令中反汇编命令是(D ) A、q B、g C、t D、u 4.在DEBUG下,修改寄存器AX的命令是___B_。 A.U AX B.R AX C.R D.A AX 5.从200H开始反汇编的DEBUG命令是A____。 A.U 200 B.R 200 C.D 200 D.U 6.仅查看用户程序中数据段10号存储单元的DEBUG命令是A____。 A.D DS:A A B.D DS:A C.D DS:10 10 D.D DS:10 7.计算机编程语言的发展顺序是(A ) A、机器语言汇编语言高级语言 B、汇编语言机器语言高级语言 C、高级语言汇编语言机器语言 D、高级语言机器语言汇编语言 8.将124转换成十六进制数的结果是_A____。 A.7CH B.7DH C.7EH D.7BH 9.计算机对字符、符号采用统一的二进制编码。其编码采用的是_C_____。 A.BCD码B.二进制码C.ASCII D.十六进制码 第二章80x86计算机组织 10.对汇编语言源程序进行翻译的程序是__B___。 A.连接程序B.汇编程序C.编译程序D.目标程序 11.在汇编语言中,能够翻译成二进制代码的指令是__A__。 A.汇编指令B.伪指令C.机器指令D.宏指令

汇编语言出错信息说明

汇编程序出错信息说明 汇编程序出错信息 编 码 提示说明 0Block nesting error 嵌套过程、段、结构、宏指令、IRC、IRP或REPT不是正确结束,如嵌套的外层已终止,而内层还是打开状态。 1Extra characters on line 当一行上已接受了定义指令说明的足够信息,而又出现多余的字符。 2Register already defined汇编内部出现逻辑错误。 3Unknown symbol type 符号语句的类型字段中有些不能识别的东西。 4Redefinition of symbol在第二遍扫视时,连续地定义了一个符号。5Symbol is multi-defined重复定义一个符号。 6Phase error between passes 程序中有模棱两可的指令,以至于在汇编程序的两次扫视中,程序标号的位置在数值上改变了。 7Already had ELSE clause在ELSE从句中试图再定义ELSE语句。 8Not in conditional block 在没有提供条件汇编指令的情况下,指定了ENDIF或ELSE。 9Symbol not defined符号没有定义 10Syntax error语句的语法与任何可识别的语法不匹配11Type illegal in context指定的类型在长度上不可接收 12Should have been group name给出的组名不符合要求 13Must be declared in pass1得到的不是汇编程序所要求的常数值,例如:向前引用的长度 14Symbol type usage illegal PUBLIC符号的使用不合法 15Symbol already different kind 企图定义与以前定义不同的符号 16Symbol is reserved word企图非法使用一个汇编程序的保留字 17Forward reference is illegal向前引用必须是在第一遍扫视中定义过的 18Must be register 希望寄存器作为操作数,但用户提供的是符号而不是寄存器 19Wrong type of register 指定的寄存器类型并不是指令或伪操作所要求的,例如:ASSUME AX 20Must be segment or group希望给出段或组,而不是其它

完整版汇编语言试题及答案..doc

一,单项选择题 (每小题 1 分,共 20 分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令 JMP FAR PTR DONE 属于 ( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是 ( A.对两个无符号数进行比较采用CMP 指令 ,对两个有符号数比较用CMP S 指令 B.对两个无符号数进行比较采用CMPS 指令 ,对两个有符号数比较用CM P 指令 C.对无符号数条件转移采用JAE/JNB 指令 ,对有符号数条件转移用JGE/J NL 指令 D.对无符号数条件转移采用JGE/JNL 指令 ,对有符号数条件转移用JAE/J NB 指令 3.一个有 128 个字的数据区 ,它的起始地址为 12ABH:00ABH, 请给出这个数据区最末一个字单元的物理地址是 ( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中 ,不正确的是 ( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是 ( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令 JNE 的测试条件为 ( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为 ( A.BX 或 CX

汇编语言复习题 (2)

汇编语言复习题 第2章8086CPU寄存器的结构及使用 1.8086CPU由指令执行部件EU和总线接口部件BIU两部分组成。其中EU的功能是控制和执行指令,主要由算术逻辑部件ALU、EU控制部件、8个16位寄存器和一个标志寄存器FLAGS组成。BIU的功能是从存储器预取指令和数据,以及所有EU需要的总线操作,实现CPU与存储器和外设间信息传递。BIU由指令队列、指令指针寄存器、段寄存器、地址加器组成。 2.Intel8086CPU共有14个16位寄存器,它们分别是通用寄存器8个即AX、BX、CX、DX、SP、BP、SI、DI,其中能用作寄存器间接寻址的寄存有BX、BP、SI和DI,控制寄存器2个即IP、PSW,段寄存器4个即DS、SS、CS和ES它们的含义分别是: 其中在编程过程中程序的段基值由汇编程序装入的段寄存器是SS和CS,由编程者用汇编指令将段基值装入的段寄存器是DS和ES,其具体指令是MOV AX,数据段段/附加数据段名,MOV DS/ES,AX,编程人员不能用指令去取其值或给其设置给定值的寄存器是IP,但是可以通过某些指令的执行而自动修改其内容,如JMP NEXT指令的功能是将目的地址的偏移量送入IP。 3.PSW是程序状态字寄存器又称为标志寄存器,用来反映微处理器在程序运行时的某些状态,其中的6个状态标志位分别是OF、SF、ZF、AF、PF和CF,反映了刚执行完算术或逻辑运算指令后的某些特征。三个控制标志位是DF即方向标志、IF即中断标志位和TF陷阱标志。如两个8位的二进制数相加其状态标志位中各标志的值是多少?10110101+10011011。 4.8086CPU数据总线16根地址总线是20根能访问的最大存储空间是1MB。 第3章存储器的分段 1.在8086CPU中存储器的编址原则是按字节编址即每一个字节单元是一个存储器地址,在源程序中用常用十六进制数或符号来表示一个存储单元的地址。任何相邻的两个字节地址可以构成一个字地址,约定用较小的那个地址来表示字地址。程序员在编程时所用的地址称为逻辑地址,CPU访问的地址称为物理地址。物理地址与逻辑地址的关系是:物理地址=段基值*16+偏移地址。如有下列存储器的结构请按要求回答问题: ①0002H的字节地址的内容是多少? ②0002H的字地址的内容是多少? ③若该存储地址所在的数据段的段基值是0F3BH,则逻辑地址 为0004H的物理地址是多少?该物理地址的字单元内容是多少? ④物理地址是0F3B1H的字节单元内容是多少?

汇编语言上机操作

汇编语言上机操作 一、建立子文件夹 如:D:\hb\masm 二、复制相关文件 把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。 三、进入DOS方式 开始/运行/cmd 当前提示符可能是: C:\documents and settings\administrator> 四、常用DOS操作命令 1、改变当前盘 输入d: 并回车,屏幕显示: D:\> 2、改变当前目录 1)进入下一级目录 D:\>cd hb 回车后,屏幕显示: D:\hb>cd masm 回车后,屏幕显示: E:\hb\masm> 问题:可以一次进入下面二级或多级目录吗? 2)返回上一级目录 D:\hb\masm>cd.. 回车后,屏幕显示: D:\hb\>cd.. 回车后,屏幕显示: D:\> 问题:可以直接返回根目录吗? D:\hb\masm>cd\ 回车后,屏幕显示: D:\> 3、显示当前目录容 D:\>dir /p 分页显示当前目录容 问题:如何显示d:\text中的容? D:\>dir d:\text↙ 4、DOS方式下如何运行程序? DOS方式下的可执行文件(即程序文件)扩展名为.exe或.,运行时只需要在系统提示符下输入文件主名即可。例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做: D:\hb\masm>test↙ 五、汇编语言上机过程 1、编辑源程序 运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。

2、汇编 D:\hb\masm>masm add5.asm↙ 生成目标程序文件add5.obj。(如果有语法错误,会提示错误所在行号和错误类型)3、连接 D:\hb\masm>link add5↙ 生成可执行文件add5.exe。 六、DEBUG程序调用及汇编语言程序调试方法 调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。DEBUG程序为用户提供多种命令,大致有:显示和修改寄存器和存贮单元的容;执行程序中任意一段或一条指令;汇编单条源语句和反汇编机器码指令;查找字符代码;端口的输入和输出;文件装入存和写入磁盘等。用户利用这些命令可以查出任何程序功能上的错误。下面说明DEBUG程序的启动方法和主要命令意义。 (一)DEBUG程序的启动 DEBUG程序有两种启动方法。DEBUG程序是在DOS盘上的一个独立的可执行程序(扩展名为.COM),所以,DEBUG程序的第一种启动方法就是把它看作和一般的可执行程序一样,只要打入DEBUG和回车键,就可以把它装入存。但是这样启动只把DEBUG 程序本身装入存并进入等待DEBUG命令状态,还没有把要调试的程序装入存。第二种启动DEBUG的程序的方法是一次相继装入DEBUG程序和要调试的程序。打入的命令格式如下: DEBUG[d:][path]filename[.ext][parml][parm2] 其中的Filename是要调试程序的文件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。可选项[parml]和[parm2]是DEBUG程序为要调试程序准备的参数(一般不用)。 例进入DEBUG程序并装入要调试程序。其操作如下: D:\hb\masm>DEBUG add5.exe (进入DEBUG,并装配add5.exe) 此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。 如果启动DEBUG时没有指定要调试的文件名,则需要用N命令指定要调试的文件,再用L命令将其装入存。操作如下: D:\hb\masm>debug↙ - n add5.exe↙ - l↙ (二)DEBUG命令 在说明每个命令之前,先说明一些共同信息: ■DEBUG命令都是以一个英文字母开头,后面跟一个或多个参数。 ■命令字母和参数可用大写或小写或混合形式。 ■命令字母和参数中,相邻两个十六进制之间必须用逗号或空格分开.其它各部分之间有无空格或逗号都可以。 ■执行任何命令期间都可用Ctrl+Break键方法结束命令的执行。

汇编错误总结

1、test.asm(54): error A2000: Block nesting error 、 说明:此错误信息通常见于一个段定义起始段名和末尾段名不一 致。说明:此错误信息通常见于一个段定义起始段名和末尾段 名不一致。修改:检查段定义,使段名前后保持一致。修改: 检查段定义,使段名前后保持一致。 2、test.asm(5): error A2005: Symbol is multidefined: DATA 说明:符号重复定义了。说明:此错误信息提示 DATA 符号重 复定义了。修改:重新设置。修改:将其中一个符号 DATA 重 新设置。 3、test.asm(7): error A2009: Symbol not defined: B9H 、 说明:行指令出错,查看该指令,说明:此错误信息为 test.asm 中第 7 行指令出错,查看该指令,源操作数为十六进制 数 B9H。按规定以字母开始的十六进制数,应在其。按规定以 字母开始的十六进制数,以便汇编程序区分常数和符号。前面 加上数字 0 以便汇编程序区分常数和符号。另一种出错的可能 原因是程序中使用的符号变量没有定义。能原因是程序中使用 的符号变量没有定义。修改:修改:以 0B9H 取代 B9H;使用 伪指令定义变量。;使用伪指令定义变量。 4、test.asm(11): error A2009: Symbol not defined: NO 、 说明:说明:test.asm 中第 11 行指令 JLE no-count,符号中使 用了中折线,中,符号中使用了中折线,折线在汇编中是作为 减号,因此,没有定义。折线在汇编中是作为减号,因此,汇 编提示标号 NO 没有定义。注意,汇编语言规定符号中可以使 用下划线。注意,汇编语言规定符号中可以使用下划线。修改:修改:将 no-count 改为 no_count。。 5、test.asm(28): error A2010: Syntax error 、

汇编语言试题及答案.

一,单项选择题(每小题1分,共20分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令JMP FAR PTR DONE属于( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是( A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP S指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM P指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J NL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J NB指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中,不正确的是( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( A.BX或CX

B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:( MOV AX,0 MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX=( A.99

MASM汇编错误信息说明 ASM问题汇总

MASM汇编错误信息说明 test.asm(54):error A2000:Block nesting error 1.1.test.asm(54): 说明:此错误信息通常见于一个段定义起始段名和末尾段名不一致。 修改:检查段定义,使段名前后保持一致。 test.asm(5):error A2005:Symbol is multidefined:DATA 2.2.test.asm(5): 说明:此错误信息提示DATA符号重复定义了。 修改:将其中一个符号DATA重新设置。 test.asm(7):error A2009:Symbol not defined:B9H 3.3.test.asm(7): 说明:此错误信息为test.asm中第7行指令出错,查看该指令,源操作数为十六进制数B9H。按规定以字母开始的十六进制数,应在其前面加上数字0以便汇编程序区分常数和符号。另一种出错的可能原因是程序中使用的符号变量没有定义。 修改:以0B9H取代B9H;使用伪指令定义变量。 test.asm(11):error A2009:Symbol not defined:NO 4.4.test.asm(11): 说明:test.asm中第11行指令JLE no-count,符号中使用了中折线,中折线在汇编中是作减号,因此,汇编提示标号NO没有定义。注意,汇编语言规定符号中可以使用下划线。 修改:将no-count改为no_count。 test.asm(28):error A2010:Syntax error 5.5.test.asm(28): 说明:此错误信息提示源程序中第28行的指令语句的语法与任何可识别的语法不匹配,出错。 修改:按照汇编指令的规定格式重新编写。 6.6.test.asm(2): test.asm(2):error A2018:Operand must be register:DX 说明:指定的寄存器不是指令或伪指令所要求的。如:ASSUME DX:DATA 修改:查看汇编指令的规定格式。

汇编语言试题及答案

一,单项选择题(每小题1分,共20分) 1.指令JMP FAR PTR DONE属于() A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是() A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS 指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP 指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JN L指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JN B指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是() A.12C5BH B.12B6BH C.12C5AH D.12BFEH 4.在下列指令的表示中,不正确的是() A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是() A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为() A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为()A.BX或CX B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在()中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:()

汇编语言2008秋季期末考试复习题及参考答案

汇编语言2008秋季期末考试复习题及参考答案 一、填空 1. 十进制数369转换成二进制数为()2,转换成十六进制数为()16. 2. 计算机中的指令由()和(地址码)两部分组成。 3. 8086的地址总线有20根,寻址范围为()字节。 4. 下一条将要执行的指令的地址存放在寄存器()中。 5. 写出IBM PC机的三种子程序返回的指令(RET), (IRET),(IRETD)。 6. 汇编语言源程序需经过()程序汇编,()程序连接才能生成可执行文件。 7. 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=() 8. REP指令前缀与()指令配合使用。 9. 在显示器上查看和修改内存单元的内容可以使用DEBUG的()和()命令。 10. (AL)=BFH,要求屏蔽第0,1两位,则要执行指令();如果要求第0,1位变反,可使用指令() 11. 宏汇编适合于(),()的子功能段使用; 二、选择题 1. 设字长N=16,有符号数7AE9H的补码表示为( ) A.9EA7H B. 76C4H C. 8417H D. 7AE9H 2. 比较有符号数3260H与0B425H的大小关系为( ) A. 相等 B. 小于 C. 大于 D. 不能比较 3. 指令JMP WORD PTR [BX][DI]中转移的目标地址为( ) A.16 d x(DS)+(BX)+(DI)B.16d x(ES)+(BX)+(DI) C.16d x(SS)+(BX)+(DI)D.16d x(CS)+(BX)+(DI) 4. 在指令MOV AX,[1000H]中,源操作数的寻址方式为( ) A.立即寻址B.直接寻址C.段内间接寻址D.寄存器寻址 5. 中断矢量表中存放的是( ) A. 中断类型号 B. 断点地址 C. 中断服务程序 D. 中断服务程序入口地址 6. 8086 的汇编语言指令系统中的条件转移指令可以使程序转移到( ) A. 段内的任何地方 B. 距该指令偏移地址为-32768~+32767的地方 C. 距该指令偏移地址为-128~+127的地方. D. 段外 7. 能定义ASCII码字符串的数据定义语句有( ) A. DB,DW,DD,DQ,DT B. DB,DW,DD C. DB, DW D. DB; 8. 若(AL)=87H,执行ADD AL,0F5H后,S,Z,C,O,P的状态为( ) A.SF=0,ZF=0,CF=1,OF=1,PF=0 B.SF=1,ZF=0,CF=1,OF=0,PF=1 C.SF=0,ZF=0,CF=0,OF=1,PF=0 D.SF=1,ZF=0,CF=1,OF=1,PF=1 9. 比较指令CMP( ) A. 专用于有符号数比较 B. 专用于无符号数比较 C. 专用于串比较 D. 不区分比较的对象是有符号数还是无符号数 10. 数据传送指令对标志位的影响为( ) A.都不影响;B.都影响; C.除了SAHF,POPF,其它均不影响. D.除了控制标志位,其它均不影响 三、判断题 ( )31. 段间调用的子程序必须由伪操作FAR说明为远过程。

汇编语言复习资料

汇编语言程序设计复习提纲 一、单项选择题 1.指令指针寄存器是()。 2. DAL DB 67H NUM EQU 80H 则执行AND DAL,NUM语句后DAL中的内容是()。 A. E7H B. 80H C. 67H D. 0 3.与指令MOV AX,NOT 0F0H等效的汇编语言指令是()。 A. MOV AX,0FH B. MOV AX,0FF0FH C. MOV AX,000FH D. MOV AX,0F0H 4.一个有16个字的数据区,它的起始地址是70A0H:DDF6H,则这个数据区最末一个字单元的物理地址是()。 B 5.可用作基址变址寻址或寄存器间接寻址的寄存器是()。 ,BX,CX,DX ,ES,CS,SS ,BP,IP,BX ,DI,BP,BX D 6.在串操作指令中,下列描述中不正确的是()。 MOVSB STOSB CMPSB LODSB D 7. ORG 0030H

DA1 DB 0 , ‘0’, 30H 偏移地址为0030H字存储单元的内容是()。 A 8.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令是()。 A. CMP D 9.将汇编语言源程序翻译成机器码程序的程序是()。 A.编译程序 B.汇编程序 C.解释程序 D.目标程序 B 10.设DS=1E4AH,偏移地址为0056H,该字节的物理地址为()。 A. 1E4A6H B. 1E456H C. 1E556H D. 1E4F6H D 11.当程序顺序执行时,每取一条指令语句,IP指针增加的值是() A.由指令长度决定的字节数 A 12.若AX=349DH, CX=0FH。则执行指令 AND AX,CX后,AX的值是()。

单片机汇编语言常见错误分析

单片机汇编语言常见错误分析 一、汇编软件汇编失败原因分析: 这里采用Keil C51 软件包中的宏汇编器A51 作为编绎器,单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成 汇编失败,常见的汇编错误如下:1. 标号重复:常见于复制、粘贴程序时忘 记修改标号,造成出现多个相同的标号,标号是不允许重复的。2.标点符号 以全角方式输入:汇编程序要求标点符号为半角方式,否则汇编失败。可以 在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易 犯而且不容易发觉的错误。3.数值#FFH 前遗漏0:根据要求应该在a~f 前加0,写成#0FFH4.字母O 和数字0 搞混:有时候这两个字看上去完全相同,要注意哦~~5.标号后边遗漏”:”6.标号使用了特殊字符:标号不能用指令 助记符、伪指令、特殊功能寄存器名和8051 在指令系统中用的“#”、“@”等,长 度以2~6 字符为宜,第一字母必须是英文字母。比如:T1、T2、A、B 这些字 符有特定的含义,不允许用于标号。7.AJMP 跳转超过2K 地址:AJMP 属于短跳转命令,有2K 地址范围的限制。8.超过地址范围:JB P3.2,EXIT 跳转超过-128~127 个地址范围。这个是最容易出现的错误!你有可能程序刚才还 能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把JB P3.2,EXIT 转换成JNB P3.2,LD01AJMP EXITLD01: AJMP EXIT……9.字母I 和数字1 混淆:冒失鬼的常见问题。10.创造发明不存在的汇编语言指令:在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不 认可。11.符号“:”“;”最好用半角书写。 二、程序出错: 1.寄存器重复调用:比如主程序中设定了R4=5,表示主程序循环执行5 次,

汇编语言设计复习题

一、选择题 1. 应用程序具有3个基本段,可执行指令应该保存于( A )。 A) 代码段B) 数据段C) 堆栈段D) 附加段 2. 8位补码F3H要扩展成16位补码应该是( D ),这样其真值才不变。 A) F0F3H B) 00F3H C) 10F3H D) FFF3H 3. “mov [ebx+8],eax”指令的目的操作数采用( C )寻址方式。 A) 存储器间接B) 寄存器C) 寄存器相对D) 立即数 4. 执行“sar ebx,1”指令后,ebx最高D31位一定等于( D ) A) 0 B) 1 C) D0位D) D30位 5. 在代码段内的-128~127个字节前后范围的跳转,可以用( C )类型名表示。 A) WORD B) DWORD C) SHORT D) FAR 6. 在Windows控制台环境,在当前光标显示信息应该使用( B )函数(功能)。 A) ReadConsole B) WriteConsole C) MessageBox D) GetStdHandle 7.汇编语言源程序经汇编后不能直接生成( C ) A) OBJ文件B) LST文件C) EXE文件D) CRF文件 8.在ADD指令中,两个操作数的物理位置不可以安排在( A )中。 A) 两个主存储单元 B) 一个主存储单元和一个数据寄存器 C) 两个数据寄存器 D) 一个堆栈单元和一个数据寄存器

9.假定ax=6987h,执行指令cmp ax,0eb30h后,则标志位CF和OF的状态( C )。 A)0,0 B) 0,1 C) 1,0 D) 1,1 10.假定esp=00120100h,eax=1f6c2107h,执行指令push ax后,存放数据07h的物理地址是( C )。 A) 00120104h B) 00120101h C) 001200fch D) 001200ffh 11.下列对标志寄存器中标志位产生影响的指令是( B ) A) jmp done B) shl eax, 2 C) call subp D) not eax 12. 假设CL=98H, 执行“MOVSX DX, CL”后,DX=( D ) A) F098H B) 0098H C) 1098H D) FF98H 13. “mov 80h[esi], eax”指令的目的操作数采用( C )寻址方式。 A) 存储器间接B) 寄存器C) 寄存器相对D) 变址寻址 14. 要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是(C )。 A) BUF DW 9 B) BUF DB 9 C) BUF DB 9 DUP (?) D) BUF DW 9 DUP (?) 15. 下列指令执行后总是使CF=0,OF=0的是( A )。 A) AND B) NEG C) MOV D) INC 16. 下面指令的表示中,错误的操作是( C ) A) mov eax,[ebx+esi] B) jmp near ptr don1 C) dec [ebx] D) mul cx

相关主题
文本预览
相关文档 最新文档