A.ADD BUF1,BUF2 B.JMP DWORD PTR DAT [BX] C.MOV AX,[BX+DI] NUM D.TEST AL,08H
9、在下列指令的表示中,不正确的是(C)。 DX
A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 10、在进行二重循环程序设计时,下列描述正确的是(A)。 DX
A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外
D.内、外循环初值都应置内循环之外,外循环之内 11、条件转移指令JNE的测试条件为(ZF=0)。 DX 12、执行如下程序: MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX
LOOP A HLT
执行后(BX)= (101)。 DX 13、上题的程序执行后(AX)= (5050)。 DX 14、对于下列程序段: AGAIN:MOV AL,[SI] MOV ES:[DI],AL INC SI
INC DI
LOOP AGAIN
也可用__ REP MOVSB __指令完成同样的功能。 DX 15、
DA1 DB‘ABCDEFGHI’ DA2 DB 9 DUP(0) ┇
LEA SI,DA1 LEA DI,DA2 MOV CX,9 CLD
LOP: LODSB SUB AL,10H STOSB LOOP LOP
. . .
试问:①写出程序执行后DA2各字节中的数据。 CXFX ②保持程序功能情况下,程序中可否改写为
123456789;不能更改
26
16、程序段如下: CXFX
BLK1 DB 46,84,34,-5,20,122,73 :
MOV CX,7 LEA S1,BLK1 NEXT: MOV AL,[SI] INC SI TEST AL,81H LOOPZ NEXT MOV BL,[SI]
:
请回答程序段运行后:(AL)=___5或0FBH__ (BL)=___14H或20______ 17、下面程序的功能是什么? CXFX STRING DB 100 DUP(?)
MOV AX,SEG STRING MOV DS,AX LEA SI,STRING MOV CX,100 LAB: MOV AL,[SI] CMP AL,’a’ JB LAB1
CMP AL,’z’ JA LAB1 SUB AL,32 MOV [SI],A LAB1: INC SI
LOOP LAB
将STRING里的小写字母’a’-‘z’转成相应的大写字母’A’-‘Z’ 18、现有下列数据段: CXTK DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL' COUNT EQU -STR1
BUF DB COUNT DUP(0) DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF MOV CX,COUNT
___CLD_或 STD_____
27
LOOP:MOVSB
______ SUB SI,2__或____ ADD DI,2__ LOOP LOP
19、下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。 CXTK
XOR AX,AX MOV BX,0
MOV CX,10或MOV CX,0AH CONT: ADD AX,BX
ADD BX,2 LOOP CONT
20、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。 CXTK
MOV CX,32H LEA SI,BEG MOV DI,SI (1)
DON:MOV AL,[SI] (2) MOV [SI],AL
(3) DEC DI LOOP DON HLT
答: (1) ADD DI, 99
(2) XCHG AL, [DI] (3) INC SI
21、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。 BC
DATA SEGMENT
DA1 DW XXXX DATA ENDS 答:
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DA1 MOV CX,16 XOR BL,BL AGAIN: MOV AL,[SI] HL AL,1
28
JC NEXT INC BL NEXT:INC SI LOOP AGAIN TEST BL,01H JNE L1 CLC JMP DONE L1: STC DONE: MOV AH,4CH INT 21H CODE ENDS
END START
22、如下程序应用冒泡法对一个无符号数组排序(由小到大排序),请完成该程序。
(注:为该程序分配100字的堆栈存储空间。) CXTK SSEG SEGMENT STACK
DW 100 DUP (?) SSEG ENDS
DSEG SEGMENT
SWAP DB ?
ARRAY DW 32760, 127, 0, 65000, 230, 100 DSEG ENDS CSEG SEGMENT
ASSUME CS∶CSEG,DS∶DSEG,SS∶SSEG START: MOV AX,DSEG MOV DS,AX
SORT: MOV CX,5
MOV SI,0 MOV SWAP,0
INNER: MOV AX,ARRAY[SI] CMP AX,ARRAY[SI+2] JBE NOSWAP
XCHG AX,ARRAY[SI+2]
MOV ARRAY[SI],AX MOV SWAP,1
NOSWAP: ADD SI,2 LOOP INNER
CMP SWAP,1 JNZ SORT MOV AH,4CH INT 21H CSEG ENDS
END START
29
第7章:子程序设计
1、主程序和所调用的子程序在同一代码段中,子程序的属性应定义为( C )。 DX
A.TYPE B.WORD C.NEAR D.FAR
2、 MOV AL,38H MOV BL,49H CALL SUBO INC AL DEC CL ┇ SUBO PROC ADD AL,BL MOV CL,AL DAA RET
SUBO ENDP
上述程序段运行后,AL=________88H _____________,CL=________80H __________。 CXFX
3、FACT PROC PUSH DX MOV DX,AX CMP AX,0 JZ DONE DEC AX CALL FACT MUL DX POP DX RET
DONE:MOV AX,1 POP DX RET
FACT ENDP
若执行以上子程序前,(AX)=5,则子程序完成的功能是: 求5!(或求5的阶乘) ,执行该子程序后(AX)= 120 。 CXFX
4、在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。(占内存空间大,但速度快)。 DX
5、设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。 CX
数据段如下:
DATA SEGMENT DAT DB XXH
SQRTAB DB 0,1,4,9,...81
30