文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言试题及答案.

汇编语言试题及答案.

汇编语言试题及答案.
汇编语言试题及答案.

一,单项选择题(每小题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

B.100

C.101

D.102

10.上题的程序执行后(AX=(

A.5000

B.5050

C.5100

D.5150

11.对于下列程序段:(

AGAIN:MOV AL,[SI]

MOV ES:[DI],AL

INC SI

INC DI

LOOP AGAIN

也可用______指令完成同样的功能。

A.REP MOVSB

B.REP LODSB

C.REP STOSB

D.REPE SCASB

12.下面指令序列执行后完成的运算,正确的算术表达式应是(

MOV AL,BYTE PTR X

SHL AL,1

DEC AL

MOV BYTE PTR Y,AL

A.y=x2+1

B.x=y2+1

C.x=y2-1

D.y=x2-1

13.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。(

A.占内存空间小,但速度慢

B.占内存空间大,但速度快

C.占内存空间相同,速度快

D.占内存空间相同,速度慢

14.在程序执行过程中,IP寄存器中始终保存的是(

A.上一条指令的首地址

B.下一条指令的首地址

C.正在执行指令的首地址

D.需计算有效地址后才能确定地址

15.PSW寄存器中共有______位条件状态位,有______位控制状态位。(

A.6、3

B.3、6

C.8、4

D.4、8

16.下列指令执行时出错的是(

A.ADD BUF1,BUF2

B.JMP DWORD PTR DAT [BX]

C.MOV AX,[BX+DI] NUM

D.TEST AL,08H

17.已知(AX=1234H,执行下述三条指令后,(AX=(

MOV BX,AX

NEG BX

ADD AX,BX

A.1234H

B.0EDCCH

C.6DCCH

D.0000H

18.在下列指令中,______指令的执行会影响条件码中的CF位。(

A.JMP NEXT

B.JC NEXT

C.INC BX

D.SHL AX,1

19.串指令中的目的操作数地址是由______提供。(

A.SS:[BP]

B.DS:[SI]

C.ES:[DI]

D.CS:[IP]

20.将DX的内容除以2,正确的指令是(

A.DIV 2

B.DIV DX,2

C.SAR DX,1

D.SHL DX,1

二,简答题(每小题4分,共12分

1.假定(DX=10111001B,(CL=0.3,(CF=1,试确定下列各条指令单独执行后,DX中的值。

(1SHR DX,1

(2RCR DL,1

(3RCL DX,CL

2.写出完成下述功能的程序段:

(1传送25H到AL寄存器

(2将AL的内容乘以2

(3传送15H到BL寄存器

(4AL的内容乘以BL的内容

并请写出最后(AX=?

3.写一程序段,求双字长数DX∶bX的相反数。三,程序分析题(每小题6分,共36分

1.现有如下程序段:

DATA SEGMENT DA3 EQU 1234H

ORG 0020H DA4 EQU $-DA2

DA1 DW 12H,23H DA5 DB 31H,32H

DA2 DB 11H,21H DATA ENDS

请回答:(1该程序段已占有的存储字节数是多少?

2.执行下列程序段后,回答问题。

ORG 1221H MOV BX,OFFSET NUM

NUM DW 12H MOV CL,BYTE PTR NUM+1 … MOV CH,TYPE NUM

MOV AX,NUM HLT

请问:(AX=______,(BX=______,(CX=______。

3.阅读如下程序:

ADRR DB XXH,XXH,……,XXH CMP ADRR[BX],0 NUM EQU $-ADRR LOOPZ DON

RETT DB?JNZ NEXT

… MOV BL,OFFH

MOV CX,NUM NEXT:MOV RETT,BL

MOV BX,-1 HLT

DON:INC BX

请问:(1该程序完成的功能是什么?

(2程序执行后指出RETT字节单元中的内容是什么?

4.现有一子程序:

SUB1 PROC PLUS:TEST BL,80H

TEST AL,80H JE EXITO

JE PLUS XCHANGE:XCHG AL,BL

TEST BL,80H EXITO:RET

JNE EXITO SUB1 ENDP

JMP XCHANGE

试回答:(1子程序的功能是什么?

(2若调用子程序前AL=9AH,BL=77H,则返回主程序时,AL=___

BL=______。

5.阅读程序段:

BLOCK DB 20H,1FH,08H,81H,OFFH… LOP1:CMP AL,[SI+1] RESULT DB? JNG NEXT

… MOV AL,[SI+1]

START:LEA SI,BLOCK NEXT:INC SI

MOV CX,[SI] LOOP LOP1

INC SI MOV RESULT,AL

MOV AL,[SI] HLT

请问:(1该程序完成的功能是什么?

(2该程序循环的次数是多少?

6.阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。ORG 100H

BLOK DW X1,X2,…,XN

COUNT EQU($-BLOLOK/2

RESULT DW COUNT,?

LEA BX,BLOK-2

MOV CX,RESULT

XOR AX,AX

GOON:ADD BX,2

CMP AX,[BX]

JAE NEXT

MOV AX,[BX]

NEXT:LOOP GOON

MOV RESULT+2,AX

程序段执行完,回答下述问题

RESULT+2字存储单元的内容=______

BX=______

程序循环次数=______

答案

1-10CCCCAADACB 11-20.ADBBAADDCC 二,简答题(每小题4分,共12分

1.答:(1 005CH (2 00DCH (3 05CCH

2.答:(1MOV AL, 25H

(2SHL AL, 1

(3MOV BL, 15H

(4MUL BL

最后,(AX=612H =1554

3.答:NEG DX

NEG AX

SBB DX, 0

三,程序分析题(每小题6分,共36分

1.答:(1 该程序段已占有的存储字节数是8个字节

(2 符号名DA4的值为2,符号名DA5的值是0026H。

2.答:(AX=0012H (BX=1221H (CX=0200H

3.答:(1 在以ADRR为起始地址的数组中,查找第一个非0数据。

(2 若找到则将第一个非0数据在数组中的偏移量送入RETT单元中;若无非0数据,则将OFFH送入RETT单元中。

4.答:(1子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。

(2 AL=77H, BL=9AH

5.答:(1 该程序完成的功能是从20H(32个有符号数中找出最小的数

送入RESUL T单元中。

(2 该程序的循环次数是1FH(31。

6.答:RESULT+2字存储单元的内容是MAX(X1, X2, … XN

BX= 100H + 2×(COUNT-1 程序循环次数=COUNT

汇编语言实现十进制加减计算器

课程设计 题目十进制数加减计算器学院计算机科学与技术 专业计算机科学与技术 班级计算机0808班 姓名何爽 指导教师袁小玲 2010 年12 月31 日

课程设计任务书 学生姓名:何爽专业班级:计算机0808班 指导教师:袁小玲工作单位:计算机科学与技术学院 题目: 十进制数加减计算器的设计 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)十进制数加减计算器的设计。 (2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该 程序进一步改进扩展的设想)。 时间安排: 设计时间一周:周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2010年12月31日 系主任(或责任教师)签名: 2010年12月31日

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 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.链接

汇编语言入门

汇编语言入门教程 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS 的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志,将在下文用到时详细说明。 内存是电脑运作中的关键部分,也是电脑在工作中储存信息的地方。内存组织有许多可存放

汇编错误总结

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、

汇编语言实现十个数的排序

DATAS SEGMENT DATA0 DB'Please input a numbers (0-65535):','$' DATA1 DB' over flow input again:','$' DATA2 DB'The num you have put is:',0ah,0dh,'$' DATA3 DB'After exchange the num is:',0ah,0dh,'$' DATA4 DB' ','$' DATA DW 10 DUP(?) DATAS ENDS STACKS SEGMENT DW 256 DUP(?);此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DA TAS,SS:STACKS ;/****************************************/ ;-----------程序开始------------ START: MOV AX,DA TAS MOV DS,AX MOV SI,0 MOV CX,10 ;----------循环输入------------ L: CALL INPUT ADD SI,2 CALL NEWLINE LOOP L MOV DX,OFFSET DATA2 MOV AH,9 INT 21H ;-------输入后显示---------- MOV CX,10 MOV DI,0 AGAIN: CALL PRINT CALL SPACE ADD DI,2 LOOP AGAIN ;----------排序-------------

MOV CX,9 MOV DI,0 LOOP0: CALL SORT ADD DI,2 LOOP LOOP0 CALL NEWLINE MOV DX,OFFSET DATA3 MOV AH,9 INT 21H ;----------交换后显示------------- MOV CX,10 MOV DI,0 AGAIN0: CALL PRINT CALL SPACE ADD DI,2 LOOP AGAIN0 ;----------返回系统-------------- EXIT: MOV AH,4CH INT 21H ;/**************************************/ ;------------输入函数-------- INPUT PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX ;----------提示信息---------- MOV DX,OFFSET DATA0 MOV AH,9 INT 21H MOV BX,0 ;BX存放十进制数 CLC MOV DX,0

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

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课 后四、六章的答案,大家抓紧时间复习哦! 一、选择题 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和

汇编语言出错信息说明

汇编程序出错信息说明 汇编程序出错信息 编 码 提示说明 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

《汇编语言》问题3.10解析

1、如果要在10000H处写入字型数据2266H,可以用以下的代码完成: mov ax,1000H mov ds,ax mov ax,2266H mov[0],ax 补全下面的代码,使它能够完成同样的功能:在如果要在10000H处写入字型数据2266H。 要求:不能使用“mov内容单元,寄存器”这类命令。 _____________ _____________ _____________ mov ax,2266H push ax 解析:大家看,如何实现在10000H处写入字型数据2266H? 也就是说要在SS:SP(1000:0)指向的栈顶处将字型数据2266H写入。 那我们在10000H处写入字型数据2266H前的栈顶指向肯定SS:SP(1000:2),即为我需要初始化栈时设定的栈顶。 因此,完成的程序如下。 mov ax.1000H mov ss,ax mov sp,2 mov ax,2266H push ax 2、如果要在1000H处读取字型数据2266H,可以用以下的代码完成: mov ax,1000H mov ds,ax mov ax,2266H mov ax,[0] 补全下面的代码,使它能够完成同样的功能:在如果要在10000H处读取字型数据2266H。 要求:不能使用“mov内容单元,寄存器”这类命令。 _____________ _____________ _____________ mov ax,2266H pop ax 解析:如何在10000H处读取字型数据2266H? 也就是说要在SS:SP(1000:0)指向的栈顶处将字型数据2266H读取。 那我们在10000H处读取字型数据2266H前的栈顶指向肯定SS:SP(1000:0),即为我需要初始化栈时设定的栈顶。 因此,完成的程序如下。 mov ax.1000H mov ss,ax mov sp,0 mov ax,2266H pop ax 总结:写入数据的话,写入数据时的栈顶和当前栈顶(即写入数据前的栈顶)不一样;读取数据的话,读取数据时的栈顶和当前栈顶(即读取数据前的栈顶)一样。

汇编语言上机操作

汇编语言上机操作 一、建立子文件夹 如: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说明为远过程。

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

单片机汇编语言常见错误分析 一、汇编软件汇编失败原因分析: 这里采用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.C 语言和汇编语言在单片机编程时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C 语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。 对于目前普遍使用的RISC 架构的8bit MCU 来说,其内部ROM、RAM、STACK 等资源都有限,如果使用C 语言编写,一条C 语言指令编译后,会变成很多条机器码,很容易出现ROM 空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C 编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。 2.C 或汇编语言可以用于单片机,C++能吗?答:在单片机编程中,主要是汇编和C,没有用C++的。 3.搞单片机编程,一定要会C 吗?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 对于目前普遍使用的RISC 架构的8bit MCU 来说,其内部ROM、RAM、STACK 等资源都有限,如果使用C 语言编写,一条C 语言指令编译后,会变成很多条机器码,很容易出现ROM 空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C 编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好。 而C 语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言

汇编语言程序设计试卷及答案AB卷

2010—2011学年度第(1)学期期末考试试卷 科 目:汇编语言程序设计 (A )卷 考试形式:闭卷 考试时间: 120 分钟 系别、班级: 姓名: 学号: 一、单项选择题:(本题共20小题,每小题1分,共20分) 1. 设DS=5788H ,偏移地址为94H ,该字节的物理地址是 。 (A) 57974H (B) 57914H (C) 5883H (D) 58ECH 2. IP 指令指针寄存器是属于 。 (A) 通用寄存器 (B) 段寄存器(C) 变址寄存器 (D) 控制寄存器 3. 下面有语法错误的指令是 。 (A) ADD AL,AH (B) ADD [BX+3],AL (C) ADD AH,[DI] (D) ADD [BX],DA1(DA1是变量名) 4. 完成对DX 的有符号数除以2的指令是 。 (A) IDIV 2 (B) SAR DX,1 (C) DIV 2 (D) RCR DX,1 5. 使进位位置1的指令是 。 (A) CLC (B) CMC (C) STC (D) NOP 6. 设AL=-100,要使AL=100应执行的指令是 。

(A)NEG AL (B)NOT AL (C)INC AL (D)DEC AL 7.在条件转移指令中,结果为负数则转移的指令是。 (A)JNS (B)JZ (C)JS (D)JC 8.下面的XCHG指令中,语法正确的是。 (A)XCHG AL,DS (B)XCHG BH,[BX] (C)XCHG AL,OFH (D)XCHG BUF1,BUF2 9.一条指令中目的操作数不允许使用的寻址方式是。 (A)寄存器寻址(B)立即数寻址 (C)变址寻址(D)直接寻址 10.设SP=1FFFH,执行下列指令后,SP寄存器的值是。 ┇ POPF PUSH BX PUSH BX ┇ (A)2000H (B)2002H (C)1FFCH (D)1FFEH 11.LES SI ,[2000H]指令的全部功能是。 (A)把地址2000H送SI (B)把地址2000H字单元的内容送SI (C)把地址2000H字单元内容送SI,把2002H字单元内容送ES (D)把地址2000H字单元内容送ES,把2002H字单元内容送SI 12.设AL=04H,CL=0F8H,执行MUL CL指令后,结果是。 (A)AX=0032H (B)AX=00E0H (C)AX=03E0H (D)AX=0FFE0H 13.设ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0,从300FFH开始的连续5 个字节单元内容分别是44H,43H,42H,41H。执行REPNZ SCASB指令后,正确的结果是。 (A)DI=0104H,CX=0000H (B)DI=0103H,CX=0001H (C)DI=0102H,CX=0002H (D)DI=0101H,CX=0003H 14.某数据段如下: DATA SEGMENT ORG 20H X DB 12H,'AB'

相关文档
相关文档 最新文档