汇编常考试题(含有详解) 下载本文

INC AH

SUB AL,10 NEXT:INC BX LOOP LOP

这个就是将3579357935这些数 一个一个加 超过十就计数 然后减十 再往后交

Ah存放的是超过10的次数 但大于10就减十 再往后加 只要大于十就减去10 之后AL中存放的是小于10的次数

上述程序段运行结束后,AH=__5____,AL=_6_____。

13、已知AX=0FF60H,CF=1

MOV DX,96 (DX为60H 有高低位之分 )

XOR DH,0FFH (xor为取反 全为1则为全部取反 高位为FF 低位还是60H) SBB AX,DX SBB 是带进位减 0ff60h -0ff60h -1=0ffffh 产生借位,cf =1

执行上述指令序列后,AX=____0FFFFH _______________,CF=_______1____________。 14、设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH

执行上述指令序列后,AL=_____79H ______________。 BL=_______06____________,CL=_____7FH ______________。 15、已知AX=0A33AH,DX=0F0F0H AND AH,DL

XOR AL,DH NEG AH NOT AL

执行上述指令序列后,AH=_______60H ____________,AL=______35H _____________。 16、DATA SEGMENT

S9 DB0,1,2,3,4,5,6,7,8,9 DATA ENDS ┇

LEA SI,S9

LEA,DI,S9+1 MOV CX,5 LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL

ADD SI,2 ADD DI,2 LOOP LOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么?

1,0,3,2,5,4,7,6,9,8

17、 .MODE SMALL

.DATA

DATA1 DW 2000H DATA2 DW 3000H

25

.CODE .STARTUP LEA SI,DATA1 MOV DI,OFFSET DATA2 MOV BX,[SI] MOV CX,[DI] MOV [SI],CX MOV [DI],BX .EXIT

END

上述程序段运行后,(DATA1)=__3000H __,(DATA2)=___2000H ____。 18、DA3 EQU WORD PTR DA4 DA4 DB 0ABH,89H ┇

SHR DA3,1 MOV DX,DA3 SHL DA4,1 MOV CX,DA4

上述程序段运行后,CX=___44AAH __,DX=____44D5H __。 (1)SHR DA4 , 1

(DA4)=89ABH/2=44D5H

此时的变化为:DA5 DB D5 , 44 (2)MOV DX , DA4 (DX)=44D5H (3)SHL DA5 , 1

(DA5)=D5H*2=(1)AAH=AAH 此时的变化: DA4 DW 44AAH (4)MOV CX , DA4 (CX)=44AAH 19、现有如下程序段:

DATA SEGMENT

ORG 0020H

DA1 DW 12H,23H DA2 DB 11H,21H DA3 EQU 1234H DA4 EQU $-DA2 DA5 DB 31H,32H DATA ENDS

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

(2)符号名DA4的值是多少?符号名DA5的值是多少? 符号名DA4的值为2,符号名DA5的值是0026H。 20、执行下列程序段后,回答问题。 ORG 1221H

26

NUM DW 12H

?

MOV AX,NUM

MOV BX,OFFSET NUM

MOV CL,BYTE PTR NUM+1 MOV CH,TYPE NUM HLT

请问:(AX)=_0012H _____,(BX)=__1221H ____,(CX)=_0200H _____。 21、阅读如下程序:

ADRR DB XXH,XXH,??,XXH

NUM EQU $ -ADRR RETT DB? ?

MOV CX,NUM MOV BX,-1 DON:INC BX

CMP ADRR[BX],0 LOOPZ DON JNZ NEXT

MOV BL,0FFH

NEXT: MOV RETT,BL

HLT

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

在以ADRR为起始地址的数组中,查找第一个非0数据

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

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

22、现有一子程序: SUB1 PROC

TEST BL,80H JE PLUS

TEST AL,80H JNE EXITO JMP XCHANGE

PLUS:TEST BL,80H JE EXITO

XCHANGE:XCHG AL,BL EXITO:RET

SUB1 ENDP

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

子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否

则不变。

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

BL=_9AH _____。

27

23、阅读程序段:

BLOCK DB 20H,1FH,08H,81H,0FFH,? RESULT DB ?

?

START:LEA SI,BLOCK

MOV CX,[SI] INC SI

MOV AL,[SI]

LOP1: CMP AL,[SI+1]

JNG NEXT

MOV AL,[SI+1] NEXT:INC SI

LOOP LOP1

MOV RESULT,AL

HLT

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

该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。

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

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

24、阅读如下程序段,回答所提出的问题,假定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字存储单元的内容=_ MAX(X1, X2, … XN);

BX=_ 100H + 2×(COUNT-1)__; 程序循环次数=_ COUNT _____

25、对于下面的数据定义,各条MOV的指令单独执行后,有关寄存器的内容是什么? FLDB DB ?

TAB1 DW 20 DUP(?) TAB2 DB ’ABCD’

A. MOV AX,TYPE FLDB AX=1 B. MOV AX,TYPE TAB1 AX=2

C. MOV CX,LENGTH TAB1 CX=20

28