16.提示下列指令序列执行后的正确结果是( A )。
MOV BX,OFFFCHMOV CL,2SAR BX,CLA.3FFFH B.0FFFH C.0FFFCH D.0FFF5H19. 指令SCAS的寻址方式是()。
A 源操作数为寄存器寻址,目的操作数为寄存器间接寻址B 源操作数为寄存器间接寻址,目的操作数为寄存器间接寻址C 源操作数为寄存器间接寻址,目的操作数为寄存器寻址D 源操作数为寄存器寻址,目的操作数为寄存器寻址22. 下列指令中不合法的指令是(C)。
A IN AX, 03F8HB MOV BX, AXC REP CMPSBD SHR BX, CL23. 下列指令中正确的是()。
A MOV SS, 2400HB MOV SS, [2400H]C MOV SS, DSD MOV SS, SP24. 下列指令中正确的是(A)。
A XCHG AH, ALB XCHG AL, 20HC XCHG DS, AXD XCHG SP, [20H]29. 下列程序段执行完后,BX寄存器中的内容是( C )。
MOV CL, 3MOV BX, 0B7HROL BX, 1ROR BX, CLA 002DHB 00EDHC C02DHD 000DH30. 执行下列程序:MOV AX, 0MOV BX, 1MOV CX, 100A: ADD AX, BXINC BXLOOP AHLT执行后的结果为:(AX)= ( C ),(BX)= ( ).A 5050,99B 2500,100C 5050,101D 2550,10235. 逻辑位移指令SHR用于(D),而算术位移指令SAR用于带符号数除2。
A 带符号数减2B 带符号数除2C 无符号数乘2D 无符号数除239. 执行下列指令后:MOV AX, 1234HMOV CL, 4ROL AX, CLDEC AXMOV CX, 4MUL CX寄存器AL的值是( B )。
A 60HB 00HC 04HD 08DH43. 对于下列程序段:AGAIN: MOV ES:[DI],ALINC DILOOP AGAIN可用指令( )完成相同的功能。
A REP MOVSB B REP LODSBC REP STOSBD REPE SCASB45. 使得JB指令执行转移操作的条件是( )。
A CF=1B CF=1且ZF=0C ZF=0D CF=0或ZF=146. 在“先判断后工作”的循环程序结构中,循环执行的次数最少是( )。
A 1B 0C 2D 不定47. 下列指令中,指令( )先执行CX-1赋给CX操作,然后再根据CX 的值决定是否转移、循环或进行重复操作。
A JNCB REPC JCXZD LOOP48. 指令LOOPZ的循环执行条件是( )。
A CX≠0并且ZF=0B CX=0或ZF=0C CX≠0并且ZF=1D CX=0或ZF=151. 运算型指令的寻址和控制转移型指令的寻址,其不同点在于( )。
A 前者取操作数,后者决定程序的转移地址B 后者取操作数,前者决定程序的转移地址C 两者都是取操作数D 两者都是决定程序的转移地址53. 汇编语言语句格式中的名字项,下列哪一个不正确?( )A. FFFFFHB. @VariableC. 0FFFFHD. Third_street二、填空11.已知:(AX)=01CDH,(BX)=0AFH,(CX)=0BE02H,CF=1,写出单步执行每条指令时CF,ZF及相关寄存器的内容。
TEST AX,BX ;AX=01CDH,BX=0AFH;CF= ,ZF= ,(AX)= H,(BX0= HROL BX,CL ;(BX)=2BC H,(CL)=02H;CF= ,ZF= ,BX= H,CL= H13.对于字除法指令,目的操作数存放在 AX 中,指令执行后,商放在 AL ,余数在 AH 中。
15. 在除法指令IDIV BX中,被除数隐含为 AX或DX:AX 。
16. 在乘法指令MUL WORD PTE[BX]中,被乘数隐含为 AX ,乘积在DX:AX 中。
17. 执行XLAT指令前,要将表的首地址放在 BX 中,表内偏移地址放在 AL 。
18. 若AL=34H,CL=4,CF=0,执行SAL AL, CL指令后,AL= 40H , CF= 1 。
20. 若DF=1,执行指令LODSB后,SI的内容会自动。
22. 利用指令JO实现转移的条件为。
23. 利用指令JZ后,程序顺序执行下一条指令的条件是。
28. 试分析下列程序段:ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP SHORT L5如果AX和BX的内容给定如下,问该程序执行完后转向哪里?AX BX⑴ 147B 80DC 转向 L1 。
⑵ B568 54B7 转向 L5 。
⑶ 42C8 608D 转向 L1 。
⑷ D023 9FD0 转向 L5 。
⑸ 94B7 B568 转向 L5 。
我也不会30. 条件转移指令的目标地址应在本条件转移指令的下一条指令地址的字节范围内。
32. 一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元的物理地址为 H。
33.假设(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H,执行指令“LES DI,[BX]”后,(DI)= , (ES)= 。
36. 令(AL)=98H, (BL)=12H, 则执行指令MUL BL后,(AX)=。
37. 假设(SS)=2250H,(SP)=0140H,如果在堆栈中存入5个数据,则栈顶的物理地址为。
38. 对于字节乘法指令,其目的操作数存放在中,而其源操作数可以用除立即数以外的任一种寻址方式。
其乘积为位,应存放在中。
44.下面程序段完成将字变量OPR1转换成反码和补码分别存入自变量COMP和NEGA单元,将语句补充完整。
OPR1 DW -XXXXXDCOMP DW ?NEGA DW ?MOV AX,OPR1(1)MOV COMP,AX(2)MOV NEGA,AXHLT54.分析下面程序段,回答指定问题:XOR AL,ALCALL SUBROUTMOV BL,ALCALL SUBROUTRCR AL,1HLTSUBROUT PROC NEARNOT ALJS NEXTSTCNEXT: RETSUBROUT ENDP问:程序运行后,AL= ,BL= ?55.分析下面程序段,回答指定问题。
BUF DB 0CHMOV AL,BUFCALL FAR PTR HECA HECA PROC FARCMP AL,10JC K1ADD AL,7K1: ADD AL,30HMOV DL,ALMOV AH,2INT 21HRETHECA ENDP问: 程序执行后,DL= ,屏幕上显示输出的字符是 。
三、问答()16. 若8086执行SUB AH,AL后的结果是(AH)=85H,OF=1,问:(1)执行前AH和AL内的数哪个大?(2)AH中原存的是正数还是负数?其理由是什么?(3)结果(AH)=85H是否正确?理由是什么?23.下列语句中,哪些是无效的汇编语言指令?并指出无效指令中的错误。
(9) INC [BX](14) MOV AX,[BX*7]24.若数组ARRAY在数据段中已作以下定义ARRAY DW 100 DUP(?)试指出下列语句中操作数中的各操作符的作用,指令执行后各寄存器产生了什么变化?MOV BX,OFFSET ARRAYMOV CX,LENGTH ARRAYMOV SI,0ADD SI,TYPE ARRAY26.执行下列程序段前,BUFFER存储区的数据为:DB 1,2,3,4,5,6请给出执行下面程序段后BUFFER存储区中的数据。
MOV SI,OFFSET BUFFERMOV CX,5XOR AL,ALAGAIN: SHL [SI],1INC SYTE PTR[SI]ADD AL,[SI]INC SILOOP AGAINMOV [SI],AIHLT28.假设VAR1和VAR2为自变量,LAB为程序中的一个标号,试找出下列指令的错误之处。
(1)ADD VAR1,VAR2(2)SUB AL,VAR1(3)JNZ VAR1(4)JMP LAB[SI](5)JMP NEAR LAB31. 指出下列每一对伪指令语句的区别。
(1) X1 DB 76 X2 EQU 76(4) X1 DW 3678H X2 DB 36H,78H五、应用。
4. 试编写一程序段,要求在长度为100H字节的数组ARRAY中,找出大于42H的无符号数的个数并存入字节单元UP中;找出小于42H的无符号数的个数并存入字节单元DOWN中。
5. 试编写一个程序求出双字节数的绝对值。
双字长数在A和A+2单元中,结果存放在B和B+2单元中。
6. 编写程序段,把字符串STRING中的第一个‘&’字符用空格符代替。
STRING DB ‘The date is FEB&03’7. 下列ASCⅡ码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:CSTRING DB ‘BASED ADDRESSING’请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。
8. 若地址偏移量为2000H~2003H有一个4字节的数,现要把该数左移1位,写出完成该操作的程序段。
(要求不超过5条指令)9. 写出对存放在DX和AX中的双字长数求负的指令序列。
10. 用其他指令完成和下列指令一样的功能。
(1) REP MOVSB (2) REP STOSB(3) REPNE SCASB (4) REPE CMPSB12. 编写一程序段,比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串则执行NEW_LESS;否则顺序执行程序。
13. 已知在N到N+I的存储区中有一组ASCⅡ码字符串(共I+1个),试编写一个汇编语言程序,将此字符串传送到NI到NI+I单元中,并使字符串的顺序与原来的顺序相反。
16. 已知DATA单元为一个16位带符号数的原码形式,试用补码形式表示该数。
17. 在内存的数据段中存放了若干个8位带符号数,数据块的长度为COUNT(不超过255),首地址为TABLE,试统计其中正元素、负元素及零元素的个数,并分别将个数存入PLUS、MINUS和ZERO单元中。
18. 编写程序将ELEMS中的100个字节数据的位置颠倒过来(即第一个字节和第100个字节的内容交换,第二个字节和第99个字节的内容交换……)。
程序设计题2.测定ALPHA字节变量单元中的ASCⅡ码字符,进行如下操作:(1)若为数字字符,送入NUM字节单元中。