汇编语言复习题(带答案)(6)

2019-08-29 00:45

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_____ LOOP:MOVSB

26

______ 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 JC NEXT

27

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、下述程序段完成计算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

23、如下程序应用冒泡法对一个无符号数组排序(由小到大排序),请完成该程序。

(注:为该程序分配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

28

LOOP INNER

CMP SWAP,1 JNZ SORT

MOV AH,4CH INT 21H CSEG ENDS

END START

第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

29

5、设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。 CX

数据段如下: DATA SEGMENT DAT DB XXH

SQRTAB DB 0,1,4,9,...81 SQR DB? DATA ENDS 答:

DATA SEGMENT DAT DB XXH

SQRTAB DB 0,1,4,9,?,81 SQR DB? DATA EMDS

STACL1 SEGMENT PARA STACK DW 20H DUP(?) STACK1 ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX ┇

CALL SUBROT ┇

MOV AH,4CH INT 21H SUBROT PROC PUSH AX PUSH BX

LEA BX,SQRTAB MOV AL,DAT TEST AL,80H JNS NEXT NEG AL

NEXT: XLAT SQRTAB MOV SQR,AL POP BX POP AX RET

SUBROT ENDP CODE ENDS END SRART

6、设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法

30

编一程序,求出A单元中给定数(<=15=的平方值送B单元保存。 BC

答:DATA SEGMENT

SQTAB DB 0,1,4,9,16,25,36,49,64,81 DB 100,121,144,169,196,225 A DB 12 B DB? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DX XOR AX,AX PUSH AX

MOV AX,DATA MOV DS,AX

MOV BX,OFFSET SQTAB MOV AL,A XLAT

MOV B,AL RET

START ENDP CODE ENDS END START

7、FUNCTION MACRO P1,P2,P3 MOV AX,P1 P2 P3 ENDM 请回答下列问题:

⑴上面程序段中,MACRO和ENDM是一对伪指令,在 宏 定义中,它们成对出现。

⑵通过调用语句FUNCTION 100,SUB,AX调用之后,AX寄存器中的内容为99。 CXFX

31


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

下一篇:小学三年级归一应用题题例

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

马上注册会员

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