有答案的汇编习题(2)

2019-08-31 19:45

11. 下面的语句中有数据0102H的字存储单元有多少?(3.2.2)

DB 10H DUP(1,2 DUP(2))

12. 如要求把首地址为BLOCK的字数组的第6个字传送到DX寄存器,可用什么指令?(3.2.2) 13. 下述程序段执行后,寄存器AX和BX的内容分别是多少?(3.2.2)

NUM EQU 945H ALPH=35*27

MOV AX,ALPH LE NUM MOV BX,ALPH GT NUM

14. 下述程序段执行后,寄存器BX和CX的内容分别是多少?(3.2.2)

NUM1=20*20 NUM2 EQU 400H REL1 DW NUM1 LE NUM2

REL2 DB NUM1 NE NUM2,NUM1 EQ NUM2 MOV BX,REL1 MOV CX,WORD PTR REL2

15. 对于下面的数据定义,三条MOV指令分别汇编成什么?(可用立即数方式表示)(3.2.2)

TABLEA DW 10 DUP(?) TABLEB DB 10 DUP(?) TABLEC DB '1234' . .

MOV AX,LENGTH TABLEA MOV BL,LENGTH TABLEB MOV CL,LENGTH TABLEC

16. 程序在数据段中定义的数组如下:(3.2.3)

NAMES DB 'TOM' DB 20 DB 'ROSE' DB 30 DB 'KATE' DB 25

请指出下列指令是否正确?为什么? (1)MOV BX,OFFSET NAMES MOV AL,[BX+5] (2)MOV AX,NAMES

(3)MOV AX,WORD PTR NAMES+1 (4)MOV BX,6 MOV SI,5

MOV AX,NAMES[BX][SI] (5)MOV BX,6*2 MOV SI,5

MOV AX,OFFSET NAMES[BX][SI] INC [AX]

(6)MOV BX,6 MOV SI,5

LEA DI,NAMES[BX][SI] MOV AL,[DI]

17. 假设数据段DSEG中的符号及数据定义如下,试写出此数据段汇编后各行语句的初始地址及其内

容。(3.2.3) DSEG SEGMENT JOE=100 SAM=JOE+20

S_F DB '/XYZ/',0DH,0AH B_F DB 101B,19,'a' .RADIX 16

BLK DB 11 DUP(' ') EVEN

W_F1 DW '12,13D,11010B,333,SAM .RADIX 10 W_F2 DW 15 LEN EQU $-S_F DSEG ENDS

18. 写出以下数据段中每个符号所对应的值。(3.2.3)

DATAREA SEGMENT MAX EQU 0FFFH

VALONE EQU MAX MOD 10H VALTWO EQU VALONE*2

BUFSIZ EQU ((VALTWO GT 10H)AND 10H)+10H BUFFER DB BUFSIZ DUP(?) BUFEND EQU BUFFER+BUFSIZ-1 DATAREA ENDS

19. 用段伪操作定义一个数据段DATA_SEG,要求段界起始与字边界,连接时,该段将与同名逻辑段连

接成一个物理段,类别为\。(3.2.3) 20. 假设程序中的数据定义如下:(3.2.3)

LNAME DB 30 DUP(?) ADDRESS DB 30 DUP(?) CITY DB 15 DUP(?) CODE_LIST DB 1,7,8,3,2

(1)用一条MOV指令将LNAME的偏移地址放入AX.

(2)用一条指令将CODE_LIST的头两个字节的内容放入SI.

(3)写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。 21. 给出等值语句如下:

ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2

下列表达式的值是多少?(3.2.3) (1)ALPHA*100+BETA

(2)ALPHA MOD GAMMA+BETA (3)(ALPHA+2)*BETA-2 (4)(BETA/3) MOD 5

(5)(ALPHA+3)*(BETA MOD GAMMA) (6)ALPHA GE GAMMA (7)BETA AND 7 (8)GAMMA OR 3

22. 对于下列指令写出汇编后的结果。(3.2.3)

(1) ARRAY DW 1,2,3 ADD SI,TYPE ARRAY (2) FEES DW 100 DUP(0) MOV CX,LENGH FEES (3)TABLE DB 'ABCD' MOV CX,LENGH TABLE

23. 指出下列伪指令表达方式的错误,并改正之。(3.3)

(1)STACK_SEG SEGMENT'STACK' (2)SEGMENT 'CODE' (3)MAIN_PROC PROC FAR START:??

MAIN_PROC ENDS END MAIN_PROC MAIN_PROC ENDP

24. 某一程序的数据段中有如下几条伪指令语句,试分析各变量的属性。(3.3)

DATA SEGMENT DDBUF EQU THIS DWORD BUF DB 100 DUP(?) DWBUF EQU WORD PTR BUF DATA ENDS

FIRST EQU THIS FAR LEA SI,BUF

25. 某程序中的数据段内容如下所示,请指出变量BUF和NUM的偏移地址为多少?(3.3)

DATA SEGMENT ORG 10 BUF DB 'ABCD' ORG ﹩+5 NUM DW 50 DATA ENDS

26. 如数组ARRAY定义如下,试写出把数组长度(字数)存入CX寄存器的指令。(3.3)

ARRAY DW 1,2,3,4,5,6,7 END DW ?

27. 请把40个字母a的字符串从源缓冲区传送到目的缓冲区。(3.3) 28. 编一完整程序求两数14与-25和的绝对值。(3.3)

29. 结构数据类型如何说明、结构变量如何定义、结构字段如何应用?(3.4)

30. 记录数据类型如何说明,记录变量如何定义,WIDTH和MASK操作符是什么作用?(3.4)

第四章 汇编语言程序设计 习题

1. 已知两个八位无符号数x和y,分别存放在BUF和BUF+1单元中,且x>y。请编程序计算x-y,结果

存回BUF单元。(4.1)

2. 已知DAT单元有一数x。现要求编程将x的低四位变为1010,最高位D7置为1,其它三位不变。

(4.1)

3. 已知有两个压缩BCD数BCD1和BCD2,其在内存存放形式为:

(BCD1)=34 (BCD1+1)=18 (BCD2)=89 (BCD2+1)=27

高位字节为高位数。要求编程将BCD1和BCD2相加,结果送BCD3开始的存储单元。(4.1) 4. DAT单元的内容拆成高、低各四位,然后分别存于DAT+1及DAT+2的低四位。(4.1)

5. 内存某一缓冲区中存放着十个单元的BCD码,每个单元中放两位BCD码(压缩BCD码)。要求把

它们分别转换为ASCII码。高位BCD码转换后放在高地址单元。(4.1)

6. 三个无符号数x,y,z,均小于等于255,分别存于DATA,DATA+1和DATA+2单元中。现要找出三个数

中数值大小居中的一个,并将其存入BUF单元中。(4.2)

7. 已知在DAT单元内有一带符号数x。试编一程序,根据x的具体情况进行如下处理:

若x为正奇数,则将x与BUF单元内容相加; 若x为正偶数,则将x与BUF单元内容相\与\; 若x为负奇数,则将x与BUF单元内容相\或\; 若x为负偶数,则将x与BUF单元内容相\异或\。

以上四种情况运算的结果都送回BUF单元。零作为正偶数处理。(4.2)

8. 累加器AL中有一字符,用ASCII码表示。当其为\时,程序转移到LPA处;如为\则转移到

LPB处;如为\则转移到LPE处,否则,均转向LPN处。(4.2) 9. 在DATA单元有一个二进制数x,要求编程完成运算:(4.2)

x+1 x>0 y=

x

x=0

x-1 x<0

10. 数组A和B,各有20个数据,它们均已按升序排放。现要求将这两个数组合并为一个数组C,且

要求其数据也按升序排放,试编程实现。(4.2)

11. 编一程序,要求将BUF单元开始的100个存储单元全部清零。若不知所清单元长度,只知以0FFH

作为结束标志,又该如何处理?(4.3)

12. 有一数据块,长度为100字节,存放于DAT开始的存储单元。要求将此数据块中的负数的个数统

计出来,并将统计结果存入MNUM单元中。(4.3)

13. 有一个由八位数组成的数列,长度为三字节,存放地址始于DAT单元。求此数列的算术和并存于

BUF和BUF+1单元。已知数列之和为十六位数。(4.3)

14. 从NUMB单元起有100个数,其值在0~100之间。试编程实现以下数据统计:

(1) 有多少个大于等于60的数?统计结果存于COUNT单元。 (2) 有多少个为100的数?统计结果存于COUNT+1单元。 (3) 有多少个为0的数?统计结果存于 COUNT+2单元。

(4) 当小于60的数超过十个,则结束统计,同时置COUNT单元为0FFH。(4.3)

15. 将ADAT单元起的100个字节数据,传送到BDAT开始的单元中去。已知数据区无覆盖问题,要求

用三种方法实现。(4.3)

16. 将BUF单元开始的50个字节数,区分出奇、偶数。将奇数在前,偶数在后,仍存回原数据区。(4.3) 17. 对A址起的30个字节长的字符串,删除其中的数字符,后续字符向前递补,剩余字符补空格字符,

编程实现。(4.3)

18. 已知有三个八位无符号数x,y,z,分别存放于NUMB,NUMB+1和NUMB+2单元。要求编一程序实现

2x+3y+5z,并要求将运算结果送RES单元和RES+1单元。(4.4)

19. 将两个八位无符号数乘法的程序编为一个子程序。被乘数、乘数和乘积存放于自NUB开始的四个

存储单元中。(4.4)

20. 将CSTRN起的50个字符的串,统计相同字符的字符数,找出相同字符数最多字符,存于CMORE单

元中。(4.4)

21. 宏定义体内不仅可以使用宏调用,也可以包含宏定义。以下宏定义:

其中MACNAM是内层的宏定义名,但又是外层宏定义的哑元,当调用DEFMAC时,就形成一个宏定义。写出宏调用:

DEFMAC ADDITION,ADD的宏展开。(4.5)

22. 用宏定义及重复伪操作把TAB,TAB+1,TAB+2,??,TAB+16的内容存入堆栈。(4.5) 23. 要求建立一个100D字的数组,其中每个字的内容是下一个字的地址,而最后一个字的内容是第一

个字的地址。(4.5)

24. 试定义宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段。

(4.5)

25. 编一个程序模块完成轮流查询三个数据输入设备的功能。(4.6)

第五章 32位指令及其编程 习题

1. 试述什么是实模式、保护模式和虚拟8086方式?(5.1.1)

2. 在以BP、EBP、ESP作为基址寄存器访问存储器操作数时,其默认的段寄存器是______;但是,通

常ESP作为________,不应该将它用于其他目的。(5.1.1) 3. 为什么说32位通用寄存器比16位通用寄存器更通用?(5.1.1)

4. 32位指令新增了哪些超越指令前缀,代码为66H和67H的超越前缀是什么作用?(5.1.1) 5. 试述32位x86 CPU的标志寄存器EFLAGS相对于原来的16位FLAGS寄存器新增那些标志位,其说

明其含义。(5.1.1)

6. 试述16位存储器寻址与32位存储器寻址在计算有效地址上有哪些不同。(5.1.2) 7. 指出下列传送指令中源操作数的寻址方式。(5.1.2)

(1) MOV EBX,77665544H (2) MOV EAX,[5678H] (3) MOV EAX,[EBX+ESI+80H] (4) MOV EAX,[ESI*2] (5) MOV EAX,[EBX+ESI*8+80H]

8. 8086/8088处理器和80286后的处理器在对PUSH指令的处理上有什么不同?(5.2.1) 9. 试用一条LEA指令实现如下运算操作:

EAX<--EBX+ESI*2+1234H

能够保证该运算正确的条件是什么?(5.2.1) 10. 写指令从端口03FCH送一个双字到EAX寄存器。(5.2.1) 11. 说明下列指令的操作。(5.2.1)

(1) PUSH [BX] (2) PUSHAD


有答案的汇编习题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018-2024年中国建筑装饰行业分析报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: