《汇编语言程序设计》期末复习题. 下载本文

内容发布更新时间 : 2024/5/8 16:10:10星期一 下面是文章的全部内容请认真阅读。

《汇编语言程序设计》期末复习题

(2008秋季)

1、现有(AX)=2000H,(BX)=1200H,(SI)=0002H,(DI)=0003H,(DS)=3000H,(SS)=3000H,(SP)=0000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H,(31203H)=90H请写出下列各条指令独立执行完后,有关寄存器及存储单元的内容,若该指令影响条件码,则请给出条件码SF,ZF,OF,CF的值。

1、ADD AX, 1200H 2、SUB AX, BX 3、MOV [BX], AX 4、PUSH AX

5、DEC BYTE PTR [1200H] 6、NEG WORD PTR [1200H] 7、SAR BYTE PTR 1200[SI],1 8、ROL BYTE RTR [BX+SI+1],1 9、MUL WORD PTR [BX][SI] 10、DVI BYTE PTR 1200[DI] 2、假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,(CX)=0005H,(DX)=0,(SI)=2060H,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,(25060H)=00B0H,(SP)=0FFFEH,(CF)=1,(DF)=1,请写出下列各条指令独立执行完后,有关寄存器及存储单元的内容,若该指令影响条件码,请给出条件码SF,ZF,OF,CF的值。

1、SBB AX, BX

2、CMP AX, WORD PTR[SI+0FA0H] 3、MUL BYTE PTR[BX] 4、AAM

5、DIV BH

6、SAR AX, CL

7、XOR AX, 0FFE7H 8、REP STOSB

9、JMP WORD PTR [BX] 10、XCHG AX, ES:[BX+SI] 3、判断下列指令是否正确

1、POP CS ( ) 2、PUSH WORD PTR 20[BX+SI-2] ( ) 3、LEA BX, 4[BX] ( ) 4、JMP BYTE PTR[BX] ( ) 5、SAR AX,5 ( ) 6、MOV BYTE PTR[BX],1000 ( ) 7、CMP [DI],[SI] ( )

汇编语言程序设计 第1页(共5页)

8、ADD BX,OFFSET A ( ) 9、IN AL,DX ( ) 10、MUL 25 ( ) 4、填空

(1)一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元物理地址为( H)

(2)假设(SS)=2250H,(SP)=0140H,如果在堆栈中存入5个数据,则栈顶的物理地址为( H)。如果又从堆栈中取出3个数据,则栈顶的物理地址为( H)。

(3)在sub ax, bx指令执行后,CF=1,说明:

(a)最高有效位 。

(b)对 数,操作结果猜出。 (4)某程序的数据段定义如下: DATASG SEGMENT

PARTLIST DB ‘PART#‘ DB 60 DB ‘PRICE‘ DW 0125

DB ‘DESCRIPTION’ DB ‘RADIO’

LISTLENG EQU ( );数组长度,用表达式表示。 DATASG ENDS 5、某程序设计数据区如下: ORG 100H

NAMES DB ‘TOM.. ‘,20 DB ‘ROSE. ‘,25 DB ‘KATE. ‘,22

(1) 列出该数据区的LIST清单(即各字节单元的存储情况)。

(2) 下列各组指令,若为合法指令,请写出执行后的结果;若为非法指令,请指

出其错误。

(a) MOV BX,OFFSET NAMES

MOV AX,[BX+5]

(b) MOV BX, OFFSET NAMES+11 CMP [BX],BYTE PTR NAMES+5 (c) MOV BX,6 * 2

MOV SI,5

MOV DI,OFFSET [BX][SI] INC [DI]

(d) MOV SI,5

LEA DI,NAMES 6[SI]

汇编语言程序设计 第2页(共5页)

MOV AL,[DI] 6、编程

(1)定义宏指令BIGER:把字变量X和Y中较大者存入BIG,若X和Y相等时,则把其中之一存入BIG。

(2)宏指令DISP完成:根据不同的功能码(2,6,9)分别产生显示单字符或字符串的程序段。

并调用:DISP 2,0DH DISP 2,0AH DISP 9,STRING

(3)定义宏指令PRINTBK:利用DOS调用完成打印机连续打印一串字符的功能,如果字符串中出现列表符TAB(ASCII码为09H),则打印8个空格符(ASCII码为20H)来代替它,字符串首地址及长度为变元。 (4)现有 data segment

ARRAY DW 64 DUP( ?) DW 5 DUP( ?) Data ends

试编制一程序段,要求在ARRAY+8到ARRAY+10(两者都包括在内)单元中插入5个0。(提示:先把从ARRAY+8单元开始的数据后移5个单元,然后再在规定位置插入0值)

7、试分析下列程序执行完后,A单元的内容是什么? Data segment

A dw 0 B dw 0

C dw 230,20,54 Data ends Code segment ┇

MOV BX,OFFSET C MOV AX,[BX] MOV B AX MOV AX,2[BX] ADD AX,B MOV A, AX ┇ Code ends

8、程序填空。假设X和X+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q(X,Y为低位字),下列程序段使2P>Q时(AX)=1,2P<=Q时(AX)=2。请把程序段填写完整。

MOV DX,X+2 MOV AX,X

汇编语言程序设计 第3页(共5页)