1、第三章1. 分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。(1) MOV AX,2408H (2 )MOV CL,0FFH (3 )MOV BX, SI(4) MOV 5BX,BL (5)MOV BP+100H,AX (6)MOV BX+DI,$(7) MOV DX,ES:BX+SI ( 8)MOV VALBP+DI,DX(9) IN AL,05H (10 )MOV DS,AX答:(1)立即数,寄存器 (2 )立即数,寄存器 (3)寄存器间接,寄存器(4)寄存器,寄存器相对 (5 )寄存器,寄存器相对 (6)立即数,基址变址(7)基址变址,寄存器 (8 )寄存器,相对基址变址(9)
2、直接端口寻址,寄存器 (10 )寄存器,寄存器2. 已知:DS=1000H,BX=0200H ,SI=02H,内存 10200H10205H 单元的内容分别为 10H,2AH,3CH,46H,59H ,6BH 。下列每条指令执行完后 AX 寄存器的内容各是什么?(1) MOV AX,0200H (2 )MOV AX,200H (3)MOV AX, BX(4) MOV AX,3BX (5)MOV AX,BX+SI (6 )MOV AX,2BX+SI答:(1)0200H (2)2A10H (3 )0200H(4) 5946H (5)463CH (6 )6B59H3. 设 DS=1000H,ES=2
3、000H ,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,BP=0200H,数据段中变量名为 VAL 的偏移地址值为 0030H,试说明下列源操作数字段的寻址方式是什么?物理地址值是多少?(1) MOV AX,100H (2)MOV AX,VAL (3 )MOV AX,BX(4) MOV AX,ES:BX (5) MOV AX,SI (6)MOV AX,BX+10H(7) MOV AX,BP (8 )MOV AX,VALBPSI(9) MOV AX,VALBXDI (10)MOV AX,BPDI答:(1)直接, 10100H (2 )直接, 10030H (3)寄存器
4、间接 ,10100H(4)寄存器间接,20100H (5 )寄存器间接 ,100A0H (6)寄存器相对,10110H(7)寄存器间接,35200H (8 )相对基址变址, 352D0H(9)相对基址变址,10154H (10)基址变址,35224H4. 写出下列指令的机器码(1) MOV AL,CL (2 )MOV DX,CX (3)MOV BX+100H,3150H答:(1)10001010 11000001B(2) 10001011 11010001B(3) 11000111 10000111 00000000 00000001 01010000 00110001B5. 已知程序的数据段
5、为:DATA SEGMENTA DB $,10HB DB COMPUTERC DW 1234H, 0FFHD DB 5 DUP(?)E DD 1200459AHDATA ENDS求下列程序段执行后的结果是什么。MOV AL, AMOV DX, CXCHG DL, AMOV BX, OFFSET BMOV CX, 3BXLEA BX, DLDS SI, ELES DI, E答:MOV AL, A AL=24HMOV DX, C DX=1234HXCHG DL, A DL=24H, A=34HMOV BX, OFFSET B BX=2MOV CX, 3BX CX=5550HLEA BX, D BX
6、=000EHLDS SI, E DS=1200H, SI=459AHLES DI, E ES=1200H, DI=459AH6. 指出下列指令中哪些是错误的,错在什么地方。(1 ) MOV DL,AX (2)MOV 8650H,AX (3)MOV DS, 0200H(4 ) MOV BX,1200H (5)MOV IP,0FFH (6 ) MOV BX+SI+3,IP(7 ) MOV AX,BXBP (8 )MOV AL,ES:BP (9 ) MOV DL,SIDI(10)MOV AX,OFFSET 0A20H (11)MOV AL,OFFSET TABLE(12)XCHG AL,50H (1
7、3)IN BL,05H (14)OUT AL, 0FFEH答:(1)长度不匹配 (2 )立即数不能做目的操作数(3 )段寄存器不能用立即数赋值 ( 4)两个内存单元不能直接传送数据(5 ) IP 不能用指令直接修改 (6)指令中不能出现 IP(7 ) BX/BP 应与 SI/DI 搭配 (8)正确(9 ) SI/DI 应与 BX/BP 搭配 (10 )OFFSET 后应跟内存单元(11)偏移地址为 16 位,AL 长度不够 (12)立即数不能用于 XCHG(13)IN 必须用 AL/AX (14)操作数顺序反向;地址应为 8 位7. 已知当前数据段中有一个十进制数字 09 的 7 段代码表,其
8、数值依次为 40H,79H ,24H,30H, 19H,12H,02H,78H ,00H,18H。要求用XLAT 指令将十进制数 57 转换成相应的7 段代码值,存到 BX 寄存器中,试写出相应的程序段。答: DATA SEGMENTTABLE DB 40H, 79H,24H,30H,19H ,12H,02H,78H ,00H,18HDATA ENDSMOV AL,5MOV BX,OFFSET TABLEXLAT TABLEMOV CL,ALMOV AL,7XLAT TABLEMOV BL,ALMOV BH, CL8. 已知当前SS=1050H,SP=0100H,AX=4860H,BX=128
9、7H,试用示意图表示执行下列指令过程中,堆栈中的内容和堆栈指针 SP 是怎样变化的。PUSH AXPUSH BXPOP BXPOP AX(1)指9. 下列指令完成什么功能?(1 ) ADD AL,DH (2)ADC BX,CX (3)SUB AX, 2710H(4 ) DEC BX (5)NEG CX (6)INC BL(7 ) MUL BX (8)DIV CL答:(1) AL+DH AL (2)BX+CX+CFBX (3 ) AX-2710HAX(_4)BX-1BX (5 )0-CXCX (6 )BL+1BL(7 ) AX*BXDX,AX (8 )AX/CL 商AL,余数AH10. 已知AX
10、=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每条指令执行后的结果是什么?标志位 CF 等于什么?(1 ) AND AH,CL (2 )OR BL,30H (3 )NOT AX(4 ) XOR CX,0FFF0H (5 )TEST DH,0FH (6 ) CMP CX,00H(7 ) SHR DX,CL (8)SAR AL,1 (9)SHL BH, CL(10)SAL AX,1 (11)RCL BX,1 (12)ROR DX, CL答:(1) AX=0408H,CF=0 (2 )BX=0F36H,CF=0(3 ) AX=0DAF7H,CF 不变 (4)CX=0FFF
11、4H,CF=0(5 ) DX=01864H,CF=0 (6)CX=0004H,CF=0(7 ) DX=0186H,CF=0 (8 )AX=2504H ,CF=0(9 ) BX=0F036H,CF=0 (10)AX=4A10H,CF=0(11)BX=1E6C/1E6DH,CF=0 (12)DX=4186H,CF=011. 假设数据段定义如下:DATA SEGMENTSTRING DB The Personal Computer & TVDATA ENDS试用字符串操作等指令编程完成以下功能:(1 )把该字符串传送到附加段中偏移量为GET_CHAR 开始的内存单元中。(2 )比较该字符串是否与Th
12、e Computer相同,若相同则将 AL 寄存器的内容置 1,否则置0。并要求将比较次数送到 BL 寄存器中。(3 )检查该字符串是否有&,若有则用空格字符将其替换。(4 )把字符串大写字母传送到附加段中以 CAPS 开始的单元中,其余字符传到以 CHART开始的单元中。然后将数据段中存储上述字符串的单元清 0。答:(1) CLDLEA SI,STRINGLEA DI,GET_CHARMOV CX,26REP MOVSB(2 )补充在附加段定义STRING1 DB The computerMOV AL,1CLDLEA SI,STRINGLEA DI,STRING1MOV CX,12REPZ
13、CMPSBJZ SKIPMOV AL,0SKIP: MOV BX,12SUB BX,CX(3 ) MOV AX, DATAMOV ES, AXCLDMOV AL,&LEA DI,STRINGMOV CX,26NEXT: REPNE SCASBJZ FINDJMP EXITFIND: MOV BYTE PTR DI-1, JCXZ EXITJMP NEXTEXIT:(4 ) LEA SI,STRINGLEA DI,CAPSLEA BX,CHARTMOV CX,26NEXT: MOV AL, SICMP AL,AJB OTHERCMP AL,ZJA OTHERMOV ES:DI,ALINC DIJ
14、MP SKIPOTHER: MOV ES:BX,ALINC BXSKIP: MOV BYTE PTRSI,0INC SILOOP NEXT12. 编程将 AX 寄存器中的内容以相反的顺序传送到 DX 寄存器中 ,并要求 AX 中的内容不被破坏,然后统计 DX 寄存器中1的个数是多少。答: MOV BL,0PUSH AXMOV DX,0MOV CX,16NEXT: SHL AX,1JNC SKIPINC BLSKIP: RCR DX,1LOOP NEXTSTOP: POP AX13. 设 CS=1200H,IP=0100H,SS=5000H ,SP=0400H,DS=2000H,SI=3000H
15、,BX=0300H,(20300H)=4800H,(20302H)=00FFH,TABLE=0500H,PROG_N 标号的地址为 1200:0278H,PROG_F 标号的地址为 3400H:0ABCH。说明下列每条指令执行完后,程序将分别转移到何处执行?(1) JMP PROG_N(2) JMP BX(3) JMP BX(4) JMP FAR PROG_F(5) JMP DWORD PTR BX如将上述指令中的操作码 JMP 改成 CALL,则每条指令执行完后,程序转向何处执行?并请画图说明堆栈中的内容和堆栈指针如何变化。答:(1)1200H:0278H(2) 1200H:0300H(3)
16、 1200H:4800H(4) 3400H:0ABCH(5) 00FFH:4800H将操作码 JMP 改成 CALL 后:(1) 1200H:0278H指令长度为 3,则 IP=0100H+3=0103H,入栈(5) 00FFH:4800H指令长度为 2,则 IP=0100H+2=0102H,入栈14. 在下列程序段括号中分别填入以下指令(1) LOOP NEXT (2 ) LOOPE NEXT (3) LOOPNE NEXT试说明在这三种情况下,程序段执行完后,AX,BX,CX ,DX 的内容分别是什么。START: MOV AX,01HMOV BX,02HMOV DX,03HMOV CX,04HNEXT: INC AXADD BX,AXSHR DX,1( )答:(1) AX=05H BX=10H CX=0 DX=0(2) AX=02H BX=04H CX=03H DX=01H(3) AX=03H BX=07H CX=02H DX=015. 某班有 7 个同学英语成绩低于 80 分,分数存在 ARRAY 数组中,试编程完成以下工作:(1)给每人加 5 分,结果存到 NEW 数组中(2)把总分存到 SUM 单元中答: DATA SEGMENTARRAY DB ?,?,?,?,?,?,?NEW DB 7 DUP(?)SUM DW 0DATA ENDSMOV AX,DATA
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。