1、第三章微机原理 习题课精品资料第三章 习题课一、选择题1、在汇编语言程序的开发过程中使用宏功能的顺序是(C )。 A、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。 A、名字项B、操作项C、操作数项D、注释项3、下列叙述正确的是( C ) A对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JN
2、L指令D对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令4、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D ).A、CMPB、SUBC、ANDD、MOV5、测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( B )。 A TEST BL,4FH JZ NEXT B XOR BL,4FH JZ NEXT C AND BL,4FH JZ NEXT D OR BL,4FH JZ NEXT 6、检查BUF的内容是否为正偶数,如是正偶数,则令AL=0。下面程序段正确的是( C )。仅供学习与交流,如有侵权请
3、联系网站删除 谢谢11A、MOV AL,BUFJS K1SHR AL,1JNC K1MOV AL,0K1:B、MOV AL,BUFAND AL,11JNZ K2MOV AL,0K2:D、MOV AL,BUFJNP K4TEST AL,80HJNZ K4MOV AL,0K4:C、MOV AL,BUF TEST AL,81HJNZ K3MOV AL,0K3:7、下列描述中,执行循环的次数最多的情况是( A )。 AMOV CX,0 BMOV CX,1 LOP:LOOP LOP LOP:LOOP LOPCMOV CX,0FFFFH DMOV CX,256 LOP:LOOP LOP LOP:LOOP
4、LOP8、在下列指令中, D 指令的执行会影响条件码中的CF位。AJMP NEXTBJC NEXTCINC BXDSHL AX,19、下列指令执行时出错的是(A)。 AADD BUF1,BUF2 BJMP DWORD PTR DAT BX CMOV AX,BX+DI NUM DTEST AL,08H10、在下列指令的表示中,不正确的是(C)。 AMOV AL,BX+SIBJMP SHORT DONICDEC BXDMUL CL11、在进行二重循环程序设计时,下列描述正确的是(A)。A外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B外循环初值应置外循环之内;内循环初值应置内循环之
5、内C内、外循环初值都应置外循环之外D内、外循环初值都应置内循环之外,外循环之内12、下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。DATASEGMENTFIRSTDB (1), (2),0HSECOND DB (3), (4)DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX, (5)MOV SI,0 (6)NEXT: MOV AL,SECONDSIADC FIRSTSI,ALINC SILOOP NEXTMOV AL,0ADC AL, (7) MOV FIRSTSI,ALMOV
6、 AH,4CHINT 21HCODEENDSEND START请选择正确的答案填入空格中:(1)A)8AH B)0BH C)D7H D)05H(2)A)8AH B)0BH C)D7H D)05H(3)A)8AH B)0BH C)D7H D)05H(4)A)8AH B)0BH C)D7H D)05H(5)A)3 B)2 C)1 D)4(6)A)CLC B)CLD C)STC D)CLI(7)A)1 B)-1 C)0 D)0FFH二、填空题1、指令JMP FAR PTR DONE属于(段间转移直接)寻址。 2、检查二个无符号数的关系,若要实现ALBL时分支去LOP1处,那么在“CMP AL,BL”
7、指令后应跟的分支指令是(JC LOP1)3、下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。TEST BH,01H JNEK14、循环指令LOOPNZ终止循环的条件是(CX=0,或ZF=1 )。 5、条件转移指令JNE的测试条件为(ZF=0)。6、执行如下程序:MOV AX,0MOV BX,1MOV CX,100A:ADD AX,BXINC BXLOOP AHLT执行后 (BX)=(101)。上题的程序执行后(AX)= (5050)。 7、执行下面的程序段后,AL_。BUF DW 2152H,3416H,5731H,4684HMOV BX, OFFSET
8、BUFMOV AL, 3XLAT8、 是过程定义结束伪指令,其前面需要加 配套使用。 是段定义结束伪指令,其前面需要加 配套使用。9、 设VALA EQU 200 VALB EQU 30 VALC EQU 1BH下列表达式的值各为多少?(2)(VALB AND 0FH)OR (VALB XOR 0FH)(3)(VALA GE VALB )AND 0FH三、程序阅读与设计1、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。 TEST AX,8000H JE K1或JZ K1 MOV PLW,BX JMP DONE K1:MOV PL
9、W,A DONE:2、 MOV DL,ALNOT DLTEST DL,04HJE NEXT NEXT: 若上述程序段执行时产生分支,说明AL中的数第 位一定为1?程序段执行后CF是 ?第2位;CF=0 3、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。_ XOR AH,AL_AND AH,08H_ JE ZERO_MOV AH,OFFHJMP NEXTZERO:MOV AH,0NEXT:4、 AND AL,AL JZ BRCH1 RCR AL,1 JZ BRCH2 RCL AL,1 INC AL JZ BRCH3 : . 上述程序运行
10、后,试回答: (1)当(AL)0时,程序转向BRCH1 (2)当(AL)1时,程序转向BRCH2 (3)当(AL)-1时,程序转向BRCH3 5、下列语句在存储器中分别为变量分配多少字节空间?VAR1DB 10,2VAR2DW 5 DUP (?), 0VAR3DB HOW ARE YOU?,$VAR4 DD -1, 1, 0VAR1分配的字节空间为 字节;VAR2分配的空间为 字节;VAR3分配的空间为 字节,VAR4分配的空间为 字节。6、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。 BUF DB 5,6,7,58H,62,45H,1
11、27,COUNT EQU $-BUFMAX DB?MOV BX,OFFSET BUFMOV CX,_COUNT-1_MOV AL,BXLOP1:INC BX_ CMP AL,BX_ _JAE NEXTMOV AL,BXNEXT:DEC CX_ JNZ LOP1_ _ MOV MAX,AL 7、请在图中正确填写执行这些伪指令后数据区的内容STRING1 DB ABCDSTRING1STRING2STRING2 DW ABCD8、读下面的程序并要求:(1)在每条语句后给出作用释。(2)画出程序流程图。(3)回答该程序完成什么功能?DSEG SEGMENTNUM1 DW 500 DUP(?)NUM2
12、 DB 150 DUP(?)DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGMAIN PROC RAR START: PUSH DS XOR AX,AX PUSH AX MOV CX,64H MOV BX,300 MOV SI,0 MOV DI,0NEXT:MOV AL,BYTE PTR NUM1BXSI ADD AL,AL MOV NUM2DI,ALINC DI INC SI LOOP NEXTRET MAIN ENDP CSEG ENDSEND START 答:这个程序是将数据段中有效地址从NUM1+300开始的连续100个任意8位二进制数分别乘以2后
13、,存放到数据段中有效地址从NUM2开始的连续100个字节单元。9、程序中下列语句在编译后装入内存时,操作系统为每个变量分配多少字节存储单元? 前15个字节中的内容是什么? ABC1 DW 0AH XYZ1 DB 4 DUP(?) STR1 DB “error a!”,“$” STR2 DB “OK!” ABC2 DD 1,2,8150H 答: ABC1 2字节, XYZ1 4字节, STR1 9字节, STR2 3字节, ABC2 12字节。10.试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。 VAR1 DB abcdefghij VAR2 DW 6
14、162H,6364H,6566H,6768H,696AH答:将第一个伪指令语句改写为VAR1 DW ba,dc,fe,hg,ji,第二个伪指令语句不变。或第一个伪指令语句不变,而将第二个伪指令语句改写为:VAR2 DB 62H,61H, 64H,63H, 66H,65H, 68H,67H, 6AH ,69H11、下面程序的功能是什么? MOV CH,4LAB:MOV CL,4ROL BX,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,3AHJL PRINTADD DL,7PRINT:MOV AH,02INT 21HDEC CHJNZ LAB显示输出BX寄存器里的内
15、容12、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。 ORG 100HBLOK DW X1,X2,XNCOUNT EQU(-BLOLOK)/2RESULT DW COUNT,? LEA BX,BLOK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,BXJAE NEXTMOV AX,BXNEXT:LOOP GOONMOV RESULT+2,AX程序段执行完,回答下述问题RESULT+2字存储单元的内容=_BX=_程序循环次数=_答: RESULT+2字存储单元的内容是MAX(X1, X2, XN) BX= 100H + 2(COUNT
16、-1) 程序循环次数 COUNT13、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串COMPUTER(不显示字符$!).试在空白处填上适当的一条指令。STRING DBCOMPUTER,$MOV BX,0FFSET STRINGLOP:MOV DL,BX MOV AH,02H INT 21H _ INC BX_ _CMP BX,24H_JNE LOP14、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答: BEGIN:MOV AH,1INT 21HCMP AL,aJB STOPCMP AL,zJA STOPSUB AL,20HMOV DL,ALMOV
17、AH,2INT 21HJMP BEGINSTOP:RET15、现有下列数据段: DATA SEGMENT STR1 DBABCDEFGHIJKL COUNT EQU STR1 BUF DB COUNT DUP(0) DATA ENDS 下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。 MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF MOV CX,COUNT CLD或 STD LOP:MOVSB _ SUB SI,2_或_ ADD DI,
18、2_ LOOP LOP 16、下述程序段完成计算220之间的偶数的和,并存于AX中。试把空白处填上适当的指令。 XOR AX,AX MOV BX,0 MOV CX,10或MOV CX,0AH CONT: ADD AX,BX ADD BX,2 LOOP CONT17、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。 MOV CX,32H?LEA SI,BEGMOV DI,SI (1) DON:MOV AL,SI (2) MOV SI,AL (3) DEC DILOOP DONHLT答: (1) ADD DI, 99(2) XCHG AL, DI(3) INC SI18、FUNCTION MACRO P1,P2,P3 MOV AX,P1 P2 P3,1 ENDM 请回答下列问题:上面程序段中,MACRO和ENDM是一对伪指令,在 宏 定义中,它们成对出现。通过调用语句FUNCTION 100,SUB,AX调用之后,AX寄存器中的内容为 99 。