1、 1.设置 CX0,则 LOOP 指令将执行多少次?例如:mov cx, 0delay: loop delayA.0 B.1 C.65535 D.65536 正确答案是: D 2.REPZ CMPSB 这条指令结束的时候,如果比较的串相等,则_。 A.SF=1 B.ZF=1 C.ZF=0 D.CX 不为 0 正确答案是: B 3.在取指令 CMP BX, 100H 的源操作数的时候使用的逻辑地址最可能的是_。 A.DS:100H B.CS:IP C.ES:100H D.SS:IP 正确答案是: B 4. 在一个字符串中查找一个字符,使用 REPNZ SCASB 指令,执行完后,如果 _表示没有
2、找到。 A.ZF=1 B.CX=0 且 ZF=0 C.CX=0,且 ZF=1 D.OF=1 正确答案是: B 5. 指令 RET 8 是 FAR 过程的返回语句,执行之后,SP 的值会_。 A.+8 B.-8 C.+10 D.+12 正确答案是: D 6. REPZ 重复前缀重复的条件是_ A.CX0 或 ZF=1 正确答案是: A 12. 下面的指令,对 CF 会产生影响的指令是 _。 A.INC AX B.DEC AX C.NEG AX D.NOT AX 正确答案是: C 15. JMP WORD PTRSI这条指令的最大跳转范围是_。 A.-32768 字节至+32767 字节 B.-1
3、28 字节至+127 字节 C.-32768 字节至+32768 字节 D.-512KB 至+512KB 正确答案是: A 19. 16 位汇编的寻址方式中,能作为基址变址寻址方式的寄存器是_。 A.SI, DI, SS, DS B.AX,BX,CX,DX C.BX, SP,SI,DI D.BX,BP,SI,DI 正确答案是: D 23. 如果(AL)83H,则执行 CBW 之后,AX 的值为_。 A.0FF83H B.8883FH C.8003FH D.0083FH 正确答案是: A 25. 以下的公式中, _的结果是下一条指令的物理地址。 A.CS*16+IP B.CS*16+IP+本条指
4、令的字节数 C.SS*16+IP D.CS*10+IP 正确答案是: A 1. 在内存中从 Table 开始的 10 个单元中连续存放 0 到 9 的平方值,任给一个 0 到 9 的数 X,该数存放在内存单元 XX 中,查表求 X 的平方值,并将结果存于内存 YY 单元中。编写程序,并在 DEBUG 中进行调试和验证结果。 (提示:考虑平方表的每一项需要什么数据类型才合适, XLAT 指令是否合适?应该如何查表?).8086.MODEL SMALL.DATAORG 10HTABLE BYTE 0,1,4,9,16,25,36,49,64,81X BYTE 7Y BYTE ?.CODESTART
5、: MOV AX , DATAMOV DS , AXMOV BX , OFFSET TABLEMOV AL , XXLATMOV Y , ALEND START2. 假设 CX:BX 中放了 4 位非压缩的 BCD 码表示的十进制数 4386,请编写完整程序将这个数转成 2 进制数放到 DI 寄存器中,并用 DEBUG 调试和验证之.8086.MODEL SMALL.DATA.CODESTART: MOV AX , DATAMOV DS , AXMOV CX , 0403HMOV BX , 0806HMOV DI , 0MOV AX , 0ADD AL , BLADD DI , AXMOV A
6、L , 10MUL BHADD DI , AXMOV AX , 100MUL CLADD DI , AXMOV AX , 1000XCHG CH , CLAND CX ,0FHMUL CXADD DI , AXEND START3. 利用跳转表技术实现根据用户输入的星期几的数字代号在屏幕上显示星期几的英文名称的功能。 (提示:1)键盘输入的是数字的 ASCII 码,需要转换成数字。2)建立一张跳转表,表中存放打印每个星期的程序段的入口地址。3)考虑怎么使程序代码量最小。 ).8086.MODEL SMALL.DATATABLE BYTE Monday$,Tuesday$,Wednesday$,
7、Thursday$,Friday$,Saturday$,Sunday$.CODESTART: MOV AX , DATAMOV DS , AXMOV AH , 01HINT 21HCMP AL , 30HJBE EXITCMP AL , 38HJAE EXITAND AX , 0FHSUB AL , 30HDEC ALMOV CL , 10MUL CLLEA DX , TABLEADD DX , AXMOV AH , 9INT 21HEXIT: MOV AH , 4CHINT 21HEND START4. 已知数据段有以下定义:NUM DW 3570STRING DB 5 DUP(20H),$
8、 ; 20H 为空格的 ASCII 码请编写完整程序,在屏幕上以十进制的形式将 NUM 这个数打印出来,可以借助 STRING 这个字符串。(NUM 这个数可以定义为一个任意字型数) 。.8086.MODEL SMALL.DATAORG 100HNUM WORD 3570STRING BYTE 4 DUP(20H),$.CODESTART:MOV AX , DATAMOV DS , AXLEA DI , STRINGMOV AX , NUMMOV CX , 4;每次循环除以 10,将商作为下次的被除数,余数即为对应的十进制数字DEC DILP:PUSH CXCWDMOV CX , 10DIV
9、CXPOP CXMOV BX , CXADD DL , 30H ;转化为对应的 ASCII 码MOV BXDI , DLLOOP LPMOV AH , 09H ;输出字符串,以$结尾LEA DX , STRINGINT 21HMOV AH , 4CH ;退出程序INT 21HEND START5. 统计以$字符结束的字符串 string 的字符个数。.8086.MODEL SMALL.DATAORG 100HSTRING BYTE HELLO,WORLD!,MY NAME IS ASM,$LEN BYTE ?STR BYTE 3 DUP(20) , $.CODESTART:MOV AX , D
10、ATAMOV DS , AXLEA DI , STRINGMOV LEN , 0MOV BL , $CP:CMP BL , DI;bl 中的值是否为$,若是则调到 continue,若不是则继续比较,相应的值加 1JZ CONTINUEINC LENINC DIJMP CPCONTINUE: MOV AL , LENLEA SI , STRMOV CX , 3DEC SILP:PUSH CXCBWMOV CL , 10DIV CLPOP CXMOV BX , CXADD AH , 30HMOV BXSI , AH AND AX , 0FFHLOOP LPMOV AH , 09HLEA DX ,
11、 STRINT 21HMOV AH ,4CHINT 21H END START6. 十进制到二进制数转换。从键盘取得一个十进制数,将其以二进数形式显示出来。要求定义回车换行子程序、从键盘获得十进制数(0128 之间) ,并存放在 BL 中的子程序,用二进制显示 BL 中数据的子程序。.8086.MODEL SMALL.DATA.CODESTART:MOV AX,DATAMOV DS,AXMAIN PROC FARCALL SHURUCALL CRLFCALL PRTCALL CRLFMOV AH,4CHINT 21HMAIN ENDPSHURU PROC NEAR ;出口参数 BLPUSH A
12、X ;保护现场PUSH CXMOV BL,0NEWCHAR:MOV AH,1INT 21H ;将键盘输入的字符的 ASCII 码传给 AL 寄存器SUB AL,30HJL EXIT ;小于 0 转CMP AL,9JG EXIT ;大于 9 转XCHG AL,BLMOV CL,10MUL CL ;将以前的值乘以 10XCHG AL,BLADD BL,AL ;加这一次读的值JMP NEWCHAREXIT:POP CXPOP AXRETSHURU ENDPCRLF PROC NEARPUSH AXPUSH DXMOV DL,0DH ;回车MOV AH,2INT 21HMOV DL,0AH ;换行MO
13、V AH,2INT 21HPOP DXPOP AXRETCRLF ENDPPRT PROC NEAR ;入口参数 BLPUSH AXPUSH CXPUSH DXMOV CX,8LP:ROL BL,1 ;循环左移,将二进制最高位挪到末尾MOV BH,BLAND BL,01H ;只保留最后一位,即二进制的第一位ADD BL,30H ;转化为 0 或 1 的 ASCII 码MOV DL,BL ;调用 DOS 的输出字符功能MOV AH,02HINT 21HMOV BL,BH LOOP LPPOP DXPOP CXPOP SIRETPRT ENDPEND START7. 利用递归程序,计算 N!。具体
14、要求:用键盘输入一个数 N(16 之间),利用一个递归过程 FAC来计算 N!(N 放在 AL 中,结果在 DX 中) ,然后将计算的结果以十进制形式打印到屏幕上。.8086.MODEL SMALL.DATARESULT WORD ?STRING BYTE 5 DUP(?),$.CODESTART: MOV AX,DATAMOV DS,AXMAIN PROC FARCALL SHURUCALL FACCALL CRLFMOV DX,AXCALL PRTMOV AH,4CHINT 21HMAIN ENDPSHURU PROC NEARMOV AH,1INT 21HSUB AL,30HJL EXI
15、TCMP AL,6JG EXITEXIT:RETSHURU ENDPMOV RESULT,DXFAC PROC NEAR ;入口参数 AL(N 的值) ,出口参数 DX(N!)CMP AL,0JNZ F1MOV DX,1RETF1:PUSH AXDEC ALCALL FACPOP CX ; 把 N 的值传给 CXCALL MULT ; 把 N*FAC(N-1)传给 DXRETFAC ENDPMULT PROC NEAR MOV AL,CLMUL DLMOV DX,AXRETMULT ENDPPRT PROC NEAR LEA SI,STRINGMOV CX,4DEC SILP:PUSH CXCWDMOV CX,10DIV CXPOP CXMOV BX,CXADD DL,30H ;转化成 ASCII 码MOV BXSI,DL LOOP LP MOV AH,09HLEA DX,STRINGINT 21HRETPRT ENDPCRLF PROC NEARPUSH AXPUSH DXMOV DL,0DH ;回车MOV AH,2INT 21HMOV DL,0AH ;换行MOV AH,2INT 21HPOP DXPOP AXRETCRLF ENDPEND START