1、习 题一、选择题1. 以 8086/8088为 CPU的微机内存最大容量为( B )。B. 1MB2. 下列四个寄存器中,不允许用传送指令赋值的寄存器是(A )。A. CS3. 指令 MOV AX,10SI的源操作数字段的寻址方式是( C )。C. 寄存器相对寻址4. 指令 MOV 100SI BP,AX 的目标操作数的隐含段为(B )。B. 堆栈段5. 一个字节所能表示的无符号整数数据范围为( B )。B. 02558. 当执行完下列指令序列后,标志位 OF和 CF的值为(D )。D. 1,1MOV AL,0C4H ;ADD AL,9DH9. 当执行完下列指令序列后,标志位 OF和 CF的值
2、为(B ) B. 0,1MOV AH, 00H; SUB AH,32H10. 当执行完下列指令序列后,标志位 OF和 CF的值为( D )。D. 1,1MOV AH,80H;NEG AH11. 已知 AL,BX 为无符号数计算 AL*BX的乘积用下述程序段(C )。C.XOR AH,AH;MUL BX14. 指令 JMP WORD PTRBX 转移的目标地址是 ( D )D. BX指出的内存单元之内容15. 当 AB 时转移的条件转移指令为(A、B 为带符号数) ( D )D. JGE16. 已知 X,Y为带符号数, 两数比较后, 欲判断 XY 发生转移, 应使用指令 ( C )C. JNG
3、17. 当执行完下述指令序列后标志位 CF和 OF的值为 ( B ) B. 0, 1MOV AH,73H;ADD AH,AH20. NEXT是程序中某指令语句标号,下述哪个程序段不能实现转移到 NEXT语句执行。 ( C )C. MOV BX, NEXT ;JMP BX 21. 循环控制指令隐含指定哪个寄存器作为循环计数器。 ( B )B. CX22. 循环控制指令与循环体入口指令的距离只能在什么范围内。( A )A. -12612923. 在循环次数已知的情况下,采用哪种方法控制循环程序最方便。( B )B. 倒计数法24. 当 CX=0时,REP MOVSB 执行的次数为。 ( B )B.
4、 0 次25. 已知 CALL BX执行前 SP=100H, 执行后 SP的内容为 ( D )D. 0FEH 26. 已知 CALL DWORD PTRBX执行前 SP=100H, 执行后 SP的内容为 ( B )B. 0FCH 27. 已知 SUBR是一个属性 NEAR的子程序, 下述调用 SUBR子程序的指令序列中, 哪一个不能实现调用 SUBR的目的。 ( C ) C. MOV BX, OFFSET SUBR ;CALL NEAR PTRBX 28. 已知 RET指令是属性为 NEAR子程序中的返回指令, 执行 RET前 SP=100H,执行后 SP的内容为 ( A )A. 102H 2
5、9. 已知 RET指令是属性为 NEAR子程序中的返回指令, 执行 RET 4前 SP=100H,执行后 SP的内容为( B )B. 106H 30. 8086/8088 CPU的 I/O指令可以采用的寻址方式为( D )。D. 直接寻址与间接寻址31. 8086/8088 CPU的 I/O指令,采用间接寻址时,可用的间址寄存器是( B )。B. DX32. 8086/8088 CPU的 I/O指令用直接寻址访问端口的地址空间为( A )。A. 00FFH33. 十进制数-100 的 8位二进制数的补码为( C ) 。C. 10011100 34. 下列是 8位二进制数的补码,其中真值最大的是
6、(D ) 。D. 0000000135. 16位有符号数的补码所表示的十进制数的范围是( B ) 。B. -32768+32767 38. 下列指令中,执行后对标志未发生影响的是_ A,B,E,F,H,I,M,O _。A. MOV AX,BX;B. PUSH AX;E. JB NEXT;F. CALL SUBB;H. MOVSB;I. LEA DX,BUF;M. NOT CX;O. XCHG AX,BX39. 下列指令中,执行后,不改变标志位 ZF的是( D ) 。D. ROR AL,CL40十六进制数 88H可表示成下面几种形式请找出错误的表示(D )D。8 位二进制数8 的补码表示41指令
7、指针寄存器是(A ) 。AIP42当执行指令 ADD AX,BX 后,若 AX的内容为 2BA0H,设置的奇偶标志位 PF1,下面的叙述正确的是(D ) 。D表示结果中低八位含 1的个数为偶数43完成将累加器 AL清零,并使进位标志 CF清零,下面错误的指令是(A ) 。AMOV AL,00H 44下列指令执行后总是使 CF0,OF0 的是(A ) 。AAND45完成同指令 XCHG AX,BX 相同功能的指令或指令序列是(D ) 。DMOV CX,AX;MOV AX,BX;MOV BX,CX46设 AH0,AL06H,BL09H,执行指令 ADD AL,BL;AAA 之后,其结果应是(A )
8、AAH01,AL05 47. 有数据定义 NUM DB 12345,经汇编后,NUM 占有(B )字节存储单元。B5 48在串操作指令前使用重复前缀指令 REPE,终止串的重复操作条件是(C ) 。CCX0 或 ZF0 49下面指令中,合理而有意义的指令是(D ) 。DREP MOVSB50在汇编语言程序中对 END语句的叙述正确的是(C )CEND 语句表示源程序到此结束51下面的数据传送指令中,错误的操作是(A ) 。AMOV SS:BX+DI,1000H52下面指令执行后,变量 DAB中的内容是(C ) 。C0F5HDAW DW 2A05H;DAB DB 0FAH;:;MOV AL,BY
9、TE PTR DAW;SUB DAB,AL53执行下列指令后,正确的结果是(B ) 。BAL64H;BL0FEHMOV AL,100;MOV BL,254设数据段中已有:DA1 DB 12H,34H;DA2 DW 56H,78H下面有语法错误的语句是(B ) 。BMOV DA11,AX55实现将 DX:AX 中存放的 32位数扩大四倍,正确的程序段是(C ) 。CMOV CX,2;LOP:SHL AX,1;RCL DX,1;LOOP LOP56 DATA SEGMENT;TA1 DW 0102H,0304H,0506H;TA2 DB 02H,03H,04H;:;MOV BX,DS:0006H;
10、AND BX,0FFH;OR BH,BX上述指令序列运行后,BX 的内容是(B ) 。B0402H 57当一个带符号数大于 0FBH时程序转移,需选用的条件转移指令是(C ) 。CJNLE 58下面指令序列测试 BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为(A ) 。指令:TEST BH,01H;K1 ; 答案: AJNE ; 59测试 BL寄存器内容是否与数据 4FH相等,若相等则转 NEXT处执行,可实现的方法是(B ) 。BXOR BL,4FH; JZ NEXT91BUF1 DB 3 DUP(0,2 DUP(1,2),3); COUNT EQU $-BUF1;符号 CO
11、UNT等价的值是(B )B1892DA1 DW 2A05H;DA2 DB 0FAH;MOV AL,BYTE PTR DA1;SUB DA2,AL上述指令执行后,DA2 中的内容是(C )C. 0F5H 93设(SS)=338AH,(SP)=450H,执行 PUSH BX,和 PUSHF两条指令后,堆栈顶部的物理地址是( A )A.33CECH 102.有指令 MOV AX,1234H,指令中的立即数 1234H是存储在(B )B.代码段 103要在程序中定义缓冲区 BUF,保留 9个字节存储空间的语句是(C )CBUF DB 9 DUP(?)104已知 AL56H,BL34H,都是压缩 BCD
12、码,要执行两数相加,正确的指令是(A )AADD AL,BL ;DAA 二、判断题。1. MOV AX,DX F ;2. MOV BX,SI F3. CMP DX,15 T ;4. SHR AX,4 F5. MOV BX,AL F ;6. MOV DS,1000H F7. TEST AX,21H T ;8. MOV AL,BX T9. MOV SI,35H F ;10. MOV AL,512 F11. 乘法指令 MUL中被乘数在 AX或 DX:AX 中存放 F12. LOOP指令是与寄存器 CX相关联的 T13. CS代码段与 DS数据段不可以指向同一位置 F14. 在汇编语句中, “299”
13、并不一定就是十进制 T15. OF为1时,说明溢出,计算出现错误 F16. 指令“MOV AX,WORD PTR 2000H”是正确的 T18. “MOV AX,0”与“XOR AX,AX”结果一致 T17. I/O接口地址是 8位的 F 19. OUT BX,AX F 20. MOV SI, SI T 21. OUT DX,AX T22. MOV 10,AL F 23. OUT 2F8H,AL F24. PUSH AL F 25. MOV DS,CS F26. ADD SI , BX F 27. ADD AX,100 T28. ADD AX,BL F 29. ADD SI ,100 F30.
14、 MUL 5 F 31. DIV 5 F32. SHR AX,CX F 33. SHR CX,1 T34. SHR AX,3 F 35. IN AL,DX F三、填空题1. 已知某内存单元的段值和偏移分别为 2010H和 100H,则该单元的物理地址为(20200H ) 。2. 已知 BX=1000H,SI=2000H,DI=3000H,BP=4000H,则地址表达式BX+100H、DIBP和 2000HSI的值分别为(1100H) 、(7000H)和(4000H) 。4. 8088/8086CPU内部寄存器有 (14)个 ,其中的(AX,BX,CX,DX )是通用寄存器,( BP,SP,SI
15、,DI )是基址和变址寄存器,(CS,DS,SS,ES )是段寄存器,此外还有指令指针寄存器(IP)和标志位寄存器(PSW )两个控制寄存器,所有寄存器都是(16)位寄存器,每个寄存器可以存放(16)位二进制数。5. 8088/8086CPU的标志位寄存器中有(9)个标志位,其中的(IF,TF,DF )是控制标志, (SP,PF,OF,CF,ZF,AF)是状态标志。7. 8088/8086CPU的存储器采用分段方式管理,每个段最多可以有(64K)字节,全部存储空间可以分成(16)个大小为 64K且互相不重叠的段。8. 采用分段方式管理的存储单元的地址分成(物理地址)和逻辑地址两种,逻辑地址由(
16、段地址)和(偏移地址)两部分构成,段地址是每个存储器段的(首地址) ;偏移地址则是相对于每个段第一个存储单元的(位移量) 。段地址存放在段寄存器中,由于8088/8086CPU的段寄存器是 16位寄存器,因此在段寄存器中存放的是段地址的(高 16)位;而 CPU对数据的存取是按物理地址进行的,物理地址和逻辑地址间的关系是(物理地址段地址10H偏移地址) 。9. 存储器中,数据是以(字节)为单位存放的,它是一个(8 位)二进制数,16 位二进制数是(2 个字节) ,又称为(字) ;每个存储单元可以存放一个(字节) ;一个字则占用两个存储单元,存放时要将(低字节)放在地址较小的存储单元中。12.
17、汇编语言程序语句构成,汇编语言的语句分成(指令、伪指令和宏指令)三类。语句通常由(名字项,操作项,操作数项,注释项)四部分构成。13. 指令语句在汇编时被翻译成(机器)指令,指示语句则在汇编时由(汇编程序解释)执行,而不被翻译成机器语言指令。14. 数据定义伪指令的功能是(为一个数据项分配存储单元),通常使用的数据定义伪指令是(DB,DW,DD)。15. 符号定义伪指令 EQU的功能是(为一个能求出常数的表达式或助记符定义一个别名),通常用它定义常数。16. 用汇编语言编写的程序称为(汇编源程序),它必须用(汇编)程序将它转换成二进制的机器语言程序,这种机器语言程序称为(目标程序),而转换的过
18、程称为(汇编)。它还必须用(连接)程序连接,才能生成可执行的程序。17汇编语言源程序扩展名是(ASM)目标程序的扩展名是(OBJ)可执行程序的扩展名是(EXE)。20. 执行指令 CALL SUBB时,所要保护的断点在(IP)寄存器中,而执行指令 CALL FAR PTR SUBB时,所要保护的断点在(CS,IP)寄存器中。21. 请用一条指令实现如下操作:(1)将 AX中划X的位清 0; 指令:(AND AX,0FFCFH)15 5 4 0 (2)寄存器的低四位取反:(XOR AL,0FH) 22. 三个重复前缀指令为(REP REPE REPNE)。23. DB指令以(1 个字节)为单位分
19、配存贮;DD 指令以(4 个字节)为单位分配存贮。故如下数据定义:V1 DB 4 DUP(2),2;COUNT EQU 10;V2 DD COUNT DUP(?)为变量 V1分配(5)个字节存贮;为变量 V2分配(40)个字节存贮。24. 设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,则(1)指令 MOV AX,BP+SI+2的源操作数有效地址为(02E2H),物理地址为(253E2H)(2)指令 MOV AX,DI+100H的源操作数有效地址为(0306H),物理地址为(21706H).25. 8086/
20、8088 CPU可访问 2个独立的地址空间,一个为存贮器地址空间,其大小为(1M)个字节;另一个为(I/0 空间),其大小为(64K)字节.26.设(AX)=1000H,(BX)=2340H 执行了指令 CMP AX,BX 后,CF 标志值为(1),ZF 标志值为(0)。27汇编语言是一种面向(机器)的语言把源程序翻译成机器语言目标程序由(汇编程序)完成2.80868088 指令系统可分为六大类,其中 (控制转移类)指令执行后,不会影响状态标志。29在 80868088CPU 控制寄存器中,(CS:IP)寄存器内容始终指向下一条指令的首地址,此时该指令物理地址计算式是 (CS10H+IP)。3
21、0已知 DS2000H,BX0D00H,(20D00H)0,(20D01H)92H,(1)执行 DEC BYTE PTRBX (20D00H)(0FFH),(2)执行 ROL WORD PTRBX,1 (20D00H)(01H),(20D02H)= (24H)。31已知 DS3000H,DI1200H,(31200H)64,(31201H)=93H,执行 NEG WORD PTR DI后,(31200H)(9CH),(31201H)=(6CH)。32己知 DS1A00H,ES2D00H,SS=1B80H,BX=100H,BP=40H,DI20H,计算下列源操作数物理地址.(1)OR AX,BP
22、 物理地址 (1B840H);(2)SUB AX,ES:BX+DI 物理地址 (2D120H)。33己知 X1 DW 0ABCDH将 X1用 DB定义原来数据区中内容保持不变X1 DB (0CDH),(0ABH)。34己知 BX1000H,执行:MOV AX,BX;NEG AX;ADD BX,AX则程序执行后,AX(0F000H),BX(0),CF(1)。358086/8088CPU 允许最大的存储空间为 1MB,因此 CPU的地址总线是 (20)位。36一个语句的名字项可以是标号或变量,在程序中它们两个在书写形式上的主要区别是 (标号后跟冒号,变量后为空格)。37无符号数和带符号数的两组条件
23、转移指令,每条指令都有完全等效的两个指令助记符,例如,JL 指令另一个指令助记符是(JNGE)。38指令 MOV AX,SEG BUF的执行,是把 (BUF的段地址)送到AX中。41在程序调试时,显示某指令存放地址是 2340:0056,则物理地址是(23456H)。42汇编语言源程序中的语句有三种类型是(硬指令)语句(伪指令)语句和(宏指令)语句。43指令 MOV AX,BX+SI+10H 源操作数寻址方式是(相对基址变址寻址)。44. 执行段间返回指令 RET时将栈顶的一个字弹出到(IP)后又弹出一个字到(CS)寄存器中。45己知数据定义语句ORG 120H 执行 MOV AX,VECT1
24、 AX=(200H)VECT1 DW 200H MOV BX,VECT2 BX=(120H)。VECT2 DW VECT1四、简答题3. “PUSH AX”语句执行的操作是什么?答:AH(SP1)AL(SP2) SPSP27. CS段,DS 段,ES 段,SS 段分别是干什么的?代码段寄存器 CS:存放当前执行的程序的段地址。数据段寄存器 DS:存放当前执行的程序所用操作数的段地址。堆栈段寄存器 SS:存放当前执行的程序所用堆栈的段地址。附加段寄存器 ES:存放当前执行程序中一个辅助数据段的段地址。8. REP的作用是什么?“MOVSB”具体是如何执行的?答:REP 作用使其后面的串指令重复执
25、行,每执行一次 CX自动减 1,直到 CX0 MOVSB具体执行,将数据段中偏移为 SI的一个字节送到附加段中偏移为 DI的一个字节单元中,同时 SI,DI 均增 1或减 1(DF0 时为“+” DF=1时为“-” )9. 中断向量表是什么?在存储器的什么地方?答:是中断入口地址集中存放的区域,以 4个字节存放一个断入口,偏移与段地址的形式,依次存放 0255 号中断的中断入口。存放在存储器开始的 1KB区域内,即地址为 00000H003FFH10.堆栈的特点是什么?后进先出从高地址往低地址存放以字为单位存放 SP永远指向栈顶。11完成下列操作选用什么指令(1)将 AX的内容减去 0520H
26、和上次运算的借位;答:SBB AX,0520H (2)将变量名 TABL的段地址送AX。答:MOV AX,SEG TABL12D1 DB 0H DUP(?);D2 DW D1写出用一条指令实现取 D1的偏移地址SI 中的三种方法。答:MOV SI,OFFSET D1;LEA SI,D1;MOV SI,D213. 定义一个宏及展开一个宏的具体做法。定义宏:macro name MACRO dummy parameter list(宏定义体)ENDM宏的调用:Macro name actual parameter list五、阅读程序,回答问题2. 写出下述两条数据定义伪指令语句经过汇编后的内存分
27、配情况。DATA1 DB 101B,-15, AB;DATA2 DW -15, AB;答:DATA1 DATA205H 0F1H 41H 42H 0F1H 0FFH 42H 41H4. 下面的子程序不完整,将它补充完整。 子程序的说明文件如下:子程序名:FMAX;子程序功能: 从一组带符号的字节数据中寻找一个最大数;入口条件: DS:SI=数据的首地址, CX=数据的个数;出口条件: AL=最大数; 答案:(JGE FMAX2 );(MOV AL,SI); 5. 依据下述子程序说明文件把子程序补充完整。 (1)子程序名:AVE(2)子程序功能:求一组无符号字节数据的平均值(3)入口条件:数据首
28、地址在 SI中,数据个数在 CL中(4)出口条件:平均值在 AL中(5)受影响的寄存器:AX 和 F答案:(XOR AX,AX) ;(INC SI)6.依据下述子程序说明文件把子程序补充完整。 (1)子程序名:MADD(2)子程序功能:求两个多字节数据之和(3)入口条件:两个数据的低字节地址分别在 SI和 DI中,数据长度在 CL中(4)出口条件:和的低字节地址在 SI中(5)受影响的寄存器:F答案:(CLC) ;(ADC SI,AL ) ;( INC SI) ;(INC DI) ;(RET)7. 依据下述子程序说明文件把子程序补充完整。 (1)子程序名:MSUB(2)子程序功能:求两个多字节
29、数据之差(3)入口条件:两个数据的低字节地址分别在 SI和 DI中,数据长度在 CL中(4)出口条件:差的低字节地址在 SI中(5)受影响的寄存器:F答案:(CLC) ;(SBB SI,AL) ;(INC SI) ;(INC DI) ;(RET)10. ;MOV DX,378H;MOV AL, A;OUT DX,AL;答:该程序段的功能为:将字符“A“送到时地址为 378H的 IO 端口中。11.;GETCH MACRO;MOV AH,1;INT 21H;ENDM答:该程序段为:定义宏 GETCH ;其功能为:功能为从键盘接收一个字符送到 AL中。12. ;DATA1 DQ ?;DATA2 D
30、Q ?;MOV CX,4;SUB BX,BX;NEXT:;MOV AX,DATA2BX;SBB DATA1BX,AX;INC BX;INC BX;DEC CX;JNZ NEXT;答:该程序段的功能为:将四字数 DATA1减去四字数 DATA2,其差放 DATA1中。13.;OLD20H DD ?;NEW20H :;CMP AL, “Q”;JNZ NEXT;JMP DWORD PTR OLD20H;NEXT:;MOV AH,4CH;INT 21H 答:程序段功能:AL 不为 Q则返回 DOS否则跳转到 OLDIOH中存放的数为偏移及段的另一段中16.MOV AL,0;MOV BL,0;MOV C
31、X,10;L1:INC BL;INC BL;ADD AL,BL;LOOP LI;HLT答:程序的功能是将 20以内的偶数相加。17.X DB 14;Y DB 4 DUP(?);MOV SI,OFFSET Y;MOV AH,0;MOV AL,X;MUL AL;MUL AX;MOV WORD PTRSI,AX;INC SI;INC SI;MOV WORD PTRSI,DX;HLT答:程序执行后 X和 Y的关系是 YX4。18.MOV AX,4BD5H;MOV BL,0;MOV DL,0;MOV CX,16;L1: SHL AX,1;JC L2;INC BL;JMP L3;L2: INC DL;L3
32、: LOOP L1;HLT答:程序的功能计算 AX中 0与 1的个数,0 个数放 BL中,1 个数放DL中,程序执行后 BL=7,DL=9,AX=0。21现有下列程序段:MOV AX,6540H;MOV DX,3210H;MOV CL,04;SHL DX, CL;MOV BL,AH ;SHL AX,CL;SHR BL,CL;OR DL,BL答:试问上述程序段运行后,(AX)5400H (BL)06H 22分析下面程序段:MOV AL,200;SAR AL,1;MOV BL,AL;MOV CL,2;SAR AL,CL;ADD AL,BL答:试问程序段执行后(BL)0E4H (AL)=0DDH 2
33、3程序段如下:BLK1 DB 46,84,34,-5,20,122,73;MOV CX,7;LEA SI,BLK1 ;NEXT:MOV AL,SI;INC SI;TEST AL,81H;LOOPZ NEXT;MOV BL,SI答:请问答程序段运行后:(AL) -5(BL)2024STRING DB ABCDEFGHJ;MOV AH,01;从键盘输入字符19;INT 21H; AND AL,0FH;DEC AL;XOR AH,AH;MOV BX,OFFSET STRING;ADD BX,AX;MOV DL,BX;MOV AH,02H;显示输出;INT 21H;试回答:(1)上述程序段的功能是什么
34、?答:从键盘上输入一位数(19) ,则输出字符串ABCDEFGHJ中对应的第几个字符。(2)如从键盘输入字符4 ,程序段有什么结果? 输出 D25 AND AL,AL;JZ BRCH1;RCR AL,1;JZ BRCH2;RCL AL,1;INC AL;JZ BRCH3;上述程序运行后,试回答:(1)当(AL)=_ 0_时,程序转向BRCH1。(2)当(AL)=_ 01H _时,程序转向 BRCH2。(3)当(AL)=_ 0FFH 时,程序转向 BRCH3。六、写出完成下列功能的程序段11将首地址为 BCD_BUF存储单元中的两个压缩 BCD码相加,和送到第三个存储单元中。MOV AL,BCD
35、BUF;ADD AL,BCDBUF1;DAA;MOV BCDBUF2,AL12将 AL中的两位 BCD码分离,分别存放 DL和 DH中。MOV CL,4;MOV DH,AL;SHR DH,CL;MOV DL,AL;AND DL,0FH13将 DL中的低 4位二进制数转换成 16进制数的 ASCII码。AND DL,0FH;OR DL,30H;CMP DL,3AH;JB P;ADD DL,7H;P:14将 AL中的 8位二进制数高 4位和低 4位交换。MOV CL,4 ;ROL AL,CL23. 利用移位、传送和加法指令,完成 AX与 10的乘法运算。SHL AX,1;MOV BX,AX;SHL
36、 AX,1;SHL AX,1;ADD AX,BX24. 编写指令序列,测试 DL寄存器的低 4位是否为 0。AND DL,0FH JZ 低 4位为 0处理程序的语句标号25. 用尽可能少的指令分别实现下述功能 如果 AH 的第 4,3 位为 11,则将 AH 清 0,否则置全 1。 AND AH,18H;XOR AH,18H;JZ P1;MOV AH,0FFH;P1: 如果 AH 中的数据为偶数, 则将 AL 清 0, 否则将 AL 置 0FFH。AND AH,01H;JZ P1;MOV AH,0FFH;P1: 如果 AH 中的数据为正数, 则将 AL 清 0, 否则将 AL 置 0FFH。A
37、ND AH, AH;JNS P1;MOV AH,0FFH;JMP P2;P1:MOV AH,0;P2: 如果 AH 中的数据满足偶校验,则将 AL 清 0,否则将 AL 置 0FFH。AND AH,AH;JP P1;MOV AH,0FFH ;JMP P2;P1:MOV AH,0;P2: 设 AX 和 BX 分别存放着一个无符号的整数, 如果 AX 中的数据是 BX中数据的整数倍, 则将 DX 清 0,否则将 DX 置全 1。MOV DX,0;DIV BX;AND DX,DX;JZ P1;MOV DX,0FFFFH;P1: 如果 BX 中的数据与 CX 中的数据相加产生溢出, 则将 AL 清 0
38、,否则将 AL 置 0FFH。ADD BX,CX;JO P1;MOV AL,0FFH ;JMP P2;P1:MOV AL,0;P2:26. 假设数据段定义如下:DATA SEGMENT;STRING DB abcde;COUNT = 5;DATA ENDS 用指令 REPNZ SCASB 从地址 STRING 开始正向查找元素c,试写出有关的程序段。MOV AX,seg STRING;MOV DS,AX;MOV ES,AX;MOV AL,c ;MOV CX,COUNT ;MOV DI,OFFSET STRING;CLD ;REPNZ SCASB;JNZ P1;找到;JMP P2;P1:未找到;
39、 P2: 27. 假设数据段定义如下:DATA SEGMENT;STR1 DB abcdef;STR2 DB abcdfe;COUNT = 6;FLAG DB 0;DATA ENDS 现想用指令 CMPSB 比较两个串 STR1 和 STR2 是否相等,若相等则将 FLAG 单元置 1,否则清 0,试写出有关的程序段。MOV AX,SEG STR1;MOV DS,AX;MOV ES,AX;MOV CX,COUNT;MOV SI,OFFSET STR1;MOV DI,OFFSET STR2;CLD ;REPE CMPSB;JNZ P1;MOV FLAG,1;JMP P2;P1: MOV FLAG,0;P2: 28将 DX:BX:AX 中的数右移 4 位。MOV CX,4;LP:SHR DX,1;RCR BX,1;RCR AX,1;LOOP LP29字变量 ADDR 的段地址在 DS 中,将 ADDR 字单元中 1 的个数存入 CX 。(例如:ADDR=1000000100000100B,则 1 的个数为 3 )MOV AX,ADDR; MOV CX,16;MOV DX,0;START:TEST AX,0001H;JNZ INC DL;SHR AX,1;LOOP START;MOV CX,DX