版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、百度文库-让每个人平等地提升自我11第三章 80x86指令系统3-1指令由 操作码 字段和 操作数 字段组成。8086的指令长度在16字节 范围。 7 .3-2 分别指出下列指令中源操作数和目的操作数的寻址方式。若是存储器寻址,使用表达 式表示出EA= ? PA= ?(2) MOV CX, DISPBX(5) AND AX, DX(8) MOV AX, BX+SI+20H MOV SI, AX(6) MOV AX, BX+10H(9) MOV BP, CX MOV SI, 2100H(4) ADC ZX, BXSI(7) MOV AX, ES:BX(10) PUSH DS解:源操作数寻址目的操
2、作数寻址EAPA1) MOV SI, 2100H立即数寻址寄存器(2) MOV CX, DISPBX寄存器相对寻址寄存器BX+SISP(DS)*16+(BX+DISP)(3) MOV SI, AX寄存器寻址寄存器间接SI(DS)*16+(SI)(4) ADC ZX, BXSI基址变址寻址寄存器BX+SI(DS)*16+(BX)+(SI)(5) AND AX, DX寄存器寻址寄存器(6) MOV AX, BX+10H寄存器相对寻址寄存器BX+DISP(DS)*16+(BX)+10H(7) MOV AX, ES:BX带段超越寄存器寻址寄存器BX(ES)*16+(BX)(8) MOV AX, BX+
3、SI+20H相对基址变址寻址寄存器BX+SI+20H(DS)*16+(BX)+(SI)+20H(9) MOV BP, CX寄存器寻址寄存器间接BP(SS)*16+(BP)(10) PUSH DS固定寻址寄存器SP(SS)*16+(SP)3-3已知8086中一些寄存器的内容和一些存储器单元的内容如图3-1所示,试指出下列各条指令执行后,AX中的内容。(1) MOV AX, 2010H(4) MOV AX, BX(7) MOV AX, 1100HBX+SI解:(1) (AX ) =2010H(5) (AX) =4C2AH(2) MOV AX, BX MOV AX, 1100HBX(8) MOVLE
4、A AX, SI(2) (AX ) =0100H(6) (AX) =7856H(3) MOV AX, 1200H(6) MOV AX, BXSI(3) (AX ) =4C2AH(7) (AX) =65B7H(4) (AX ) =3412H(8) (AX ) =0002H百度文库-让每个人平等地提升自我M30100H12H30101H34H30102H56H30103H78H31200H2AH31201H4CH31202HB7H31203H65HCPUBX0100HSI0002HDS3000H图3-13-4 已知(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=1FH ,
5、( PORT+1)=45H,执行下歹胜旨令后,指出结果等于多少?'解:OUT DX, AL (2)OUT DX, AX IN AL, PORT (4)IN AX, 80H (5)OUT PORT1, AL (6)OUT PORT1, AX(0380H)=40H(380H)=40H(381h)=20H(AL)=1FH(AX)=451FH(PORT1)=40H (PORT1)=2040H3-5 已知:(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213, 试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。图中应标出存储单元的实际地址P
6、A。PUSH AXPUSH CX ;位置 1POPF;位置2解:已知(SS)=0A2F0H ,指令顺序依次编号为、,示意图如图所示:(SS)=0A2F0H |0A2FBCH13H一(SP)-4=00BCH (g 1)F2H0A2FBEH31H一(SP) -2=00BEH (SP)+2=00BCH +0002H=00BEH (位置 2)8BH0A2FC0H(SP) =00C0H23百度文库-让每个人平等地提升自我3-6识别下列指令的正确性,对错误的指令,说明出错的原因。(1) MOVDS, 100(11) OUTCX, AL(2) MOV1000H, 23H(12) IN AX, 380H(3)
7、 MOV1000H,2000H(13) MOVCL, 3300H(4) MOVDATA, 1133H(14) MOVAX, 2100HBP(5) MOV1020H, DX(15) MOVDS, ES(6) MOVAX, 0100H+BX+BP(16) MOVIP, 2000H(7) MOVCS, AX(17) PUSHCS(8) PUSHAL(18) POPCS(9) PUSHWORD PTRSI(19) LDSCS, BX(10) INAL, 80H(20) MOVGAMMA, CS、解:(1)X,不能对段寄存器送立即数(11)X,应输出到端口而不是通用寄存器(2)X,存储单兀类型不止确(1
8、2)X ,用 DX做间址寄存器 380H应存(3)X,MOV不能实现两个存储单元间DX直接传送(13)X,类型/、匹配(4)X,段名不能作目的操作数(14)VX,立即数不能作目的操作数(15)X,两个段寄存器间不能直接传送、(6)X,基址寄存器BX和BP只能使用其(16)x, IP不能直接用作目的操作数中一个(17)X,CS不能用作目的操作数(18)x, CS不能做目的操作数X,堆栈操作作为字操作AL应改为(19)X,目的操作数应是通用寄存器而不AX能是段寄存器CS(9)V(20)X,符号名不能作为目的操作数(10)X,80H为输入端口方不加方括可3-7已知存储器数据段中的数据如图3-3所示。
9、阅读下列的两个程序段后,回答:仆每个程序段的运行结果是什么?2.两个程序段各占多少字节的内容,执行时间是多少?(1) LESSI, NUM1(2)MOVAX, SIMOVAX, NUM1ADDAX, 4SIADDAX, NUM2MOV8SI, AXMOVSUM, AXADDSI, 2MOVAX, NUM1+2MOVAX, SIADCAX, NUM2+2ADCAX, 4SIMOVSUM+2, AXMOV8SI, AX解:1、运行结果如下:(1) 0AC6863A0H(2) 0AC6863A02、时钟周期字节数(1) LESSI, NUM12+EA24MOVAX, SI10333ADD AX, 4
10、SI MOV 8SI, AX ADD SI, 2 MOV AX, SI ADC AX, 4SI MOV 8SI, AX(2) MOV AX, NUM1 ADD AX, NUM2 MOV SUM, AX MOV AX, NUM1+2 ADC AX, NUM2+2 MOV SUM+2 , AX9+EA241034341039+EA2410241039+EA249+EA249+EA249+EA249+EA24MNUM148HDS41H16H28HNUM258H22H52H84HSUM图3-33-8已知数据如图3-3所示,数据的低位在前,按下列要求编写程序段:1 .完成NUM1和单元NUM2两个字数据
11、相加,和存放在 NUM1中。2 .完成NUM1单元开始的连续4个字节数据相加,和不超过一字节,存放 SUM单元。3 .完成NUM1单元开始的连续8个字节数据相加,和 16位数,放在SUM和SUM+1两个 单元(用循环)。4 .完成NUM1和NUM2的双倍精度字数据相加,和放在 NUM2开始的字单元中。解:1、CLCLEA SI, NUM1MOV AX, WORD PTR SI ADD AX, WORD PTR NUM2 MOV WORD PTR SI, AX MOV AX, WORD PTR SI+2 ADC AX, WORD PTR NUM2+2 MOV WORD PTR SI+2, AX
12、HLT2、LEA SI, NUM1 MOV AL, SI ADD AL, 1SI ADD AL, 2SI ADD AL, 3SI MOV SUM, AL HLT3、 CLCCLDLEA SI, NUM144MOV AL, SIMOV AH, 0 MOV CX, 7 XOR BH, BH/AGA: MOV BL, 1SI/ADC AX, BXINC SI/DEC CX /JNZ AGA MOV SUM, AX HLT4、LEA SI, NUM1 LEA DI, NUM2 MOV AX, SI ADD AX, DI MOV DI, AX MOV AX, 2SI ADC AX, 2DI MOV 2D
13、I, AX3-9已知的BCD数如图3-3所示,低位在前,按下列要求编写计算BCD数据(为组合型BCD)的程序段。1 .完成从NUM1单元开始的连续 8个组合型BCD数相加,和(超过一字节)放在 SUM和 SUM+1两个单元中。2 .完成NUM1单元和NUM2单元的两个BCD数相减,其差存入 SUM单元,差=?, (CF) =?解:1、CLC CLD LEA SI, NUM1 MOV CX, 7 MOV AH, 0 MOV AL, SI AGA: INC SIADC AL,SIDAA/LOOP AGA MOV SUM, ALMOV SUM+1 , AH /HLT/2、 CLCMOV AH, 05
14、5MOVSUBDASAL, NUM1AL, NUM2MOVSUM, AL差=0F0H=-10H, CF=13-10写出下列程序段完成的数学计算公式,并画出数据存放的示意图。MOV AX, XMOV DX, X+2ADD AX, YADC DX, Y+2SUB AX, ZSBB DX, Z+2MOV W, AXMOV W+2, DX解:W=X+Y-Z,数据存放如图所示:X X+2YY+2ZZ+2WW+23-11已知数据如图3-3所示,低位在前,按下列要求编写程序段1. NUM1和NUM2两个数据相乘(均为无符号数),乘积放在SUM开始的单元。2. NUM1和NUM2两个字数据相乘(均为无符号数)
15、,乘积放在SUM开始的单元。3. NUM1单元的字节数据除以 13 (均为无符号数),商和余数依次放入 SUM开始的两个字 节单元。4. NUM1单元的字节数据除以 NUM2字单元的字,商和余数依次放入 SUM开始的两个字 节单元。解:1. 为32位X 32位,极为164位/2. MOV AX, NUM1 /IMUL NUM2 ;积在(DX) (AX) 中/MOV SUM, AXMOV SUM+2 , DX/3. MOV AL, NUM1/CBWMOV CL, 0DH66DIV CLMOV SUM, ALMOV SUM+1 , AH4. MOV AX, NUM1CWDIDIV NUM2MOV
16、SUM, AXMOV SUM+2 /DX3-12 (L 略)3-13 已知(AL) =0C4H , 结果。1. AND AL, DATA2. OR AL,DATA3. XOR AL, DATA4. NOT DATA解;DATA单元中的内容为 5AH,写出下列每条指令单独执行后的5. AND AL, 0FH6. OR AL, 01H7. XOR AL, 0FFH8. TEST AL, 80H1. (AL)=01000000B=40H2. (AL)=0DEH3. (AL尸B=9EH4. (DATA)=0A5H5. (AL)=04H6. (AL)=0C5H7. (AL)=3BH8. (AL)=0C4
17、H,OF=0,CF=03-14用移位循环指令,编写完成以下功能的程序段(结果放回原处)1 .将无符号数83D分别乘2和处2.2 .将带符号数-47D分别乘2和除2.3 .将图3-3中NUM1双字乘2和除2.4 .将图3-3中从NUM1开始的4个字乘2.解:1. MOV AL, 53HSHL AL, 1MOV AL, 53HSHR AL, 12. MOV AL, 0D1HSAL AL, 1MOV AL, 0D1HSAR AL, 13. MOV AX, NUM1/MOV DX,NUM1+2SHL AX, 177RCL DX, 1MOV AX, NUM1MOV DX, NUM1+2SAR DX, 1
18、/RCR AX, 1/4. SAL NUM1 ,1/RCL NUM1+2 , z 1RCL NUM1+4 , 1RCL NUM1+6 , 13-15编写完成以下功能的程序段,并指出运行后,其标志 CF、ZF、SF和OF的状态是什 么?1 . BCD 数 58322 .无符号数 3AH3 AH3 .带符号数 79 ( 57)4 .带符号数一32+ (42)解:1. MOV AL, 58HSUB AL, 32HDASCF=0, ZF=0, SF=0, OF=02. MOV AL, 3AHSUB AL, 3AHCF=0, ZF=1, SF=0, OF=03. 已知X=79D,Y=57D 则【X】补=
19、01001111,【丫】补二所以凶补一Y补=凶补+-Y补=MOV AL, 79MOV BL, -57SUB AL, BLCF=0, ZF=0, SF=1 , OF=1/4. MOV AL, 0F3HMOV BL, 2AHADD AL, BL/或者MOV AL, 0F3HADD AL, 2AHCF=0, ZF=0, SF=0, OF=03-16用循环移位指令实现下列功能,设(AX ) =0C3H1 .设(CL) =8 ,移位前、后AX内容不变882 .设(CL) =9,移位前、后AX内容不变3 .将AX中高4位和低4位交换位置4 .将AX中高4位放到低4位上,而高4位置0 解:1. MOV CL
20、, 8/ROL AL, CL(或者 ROR AL, CL)2. MOV CL, 9/RCL AL,CL(或者 RCR AL, CL)3. MOV BX, AX AND AX, 0FF0H XCHG BH, BL MOV CL, 4 ROL BH, CL ROL BL, CL AND BH,0F0H AND BL, 0FH OR AX, BX4. 本小题可以多种解法: 解1:5. MOV BX, AX AND AX, 0FF0H XCHG BH, BL MOV CL, 4 ROL BH, CL ROL BL, CL AND BH,0 AND BL, 0FH OR AX, BX解2:MOV BX,
21、 AXXCHG AH, ALMOV CL, 4ROR AX, CLSHR AH, CL/AND AL, 0FHAND BL, 0FOH OR AL, BL3-17写出下列程序段执行后的结果:(AL) =?/<DL) =?完成的是什么功能?MOV CL,4MOV AL,8799MOV DL, ALMOV AL,0FHOR AL,30HSHR DL,CL/OR DL,30H/解:完成与、或、移位等逻辑运算,运算结果:(AL) =37H; (DL) =35H3-18用乘法指令和用传送、移位、相加指令分别实现Y=10X的运算,设X=12H,分别编写这两个程序段。解:(1) MOV AL, XMO
22、V CL, 10NUL CL(2) MOVAL, XSALAL,1;(AL)=2*XMOVBL, AL;(BL)=X*2SALAL, 1;(AL)=4*XSALAL, 1;(AL)=8*XADDAL, BL;(AL)=8*X+2*X=10*X3-19写出下面指令序列完成的数学计算是什么?MOV CL, 3SHL AX, CLSHL BL, CLSHL CX, CLSHL DH, CL解:将一多精度数(6字节)乘以83-20写出下列能代替重复串操作指令完成同样功能的指令序歹U。(2) REP MOVSW(3) REP CMPSB(4) REP SCASB (5) REP LODSW REP ST
23、OSB 解:(1) LEA SI, AREA1 LEA DI, AREA2MOV CX, N/CLD/AGA: MOV AX, DS:SIMOV ES:DI, AX1010INC SI INC SI INC DI INC DI DEC CX JNZ AGA RET(2) LEA SI, VAR1 LEA DI, VAR2 MOV CX, N CLDNEXT: CMPSBJNZ FIN LOOP NEXT RET(3) MOV DI, OFFSET COMMAND MOV AL,'' MOV CX, N CLDNEXT: SCASBJZ FOUNDLOOP NEXT RET(4)
24、 MOV SI, OFFSET BUF MOV CX, N CLD NEXT: LODSW MOV RES, AX LOOP NEXT RET(5) MOV DI,OFFSET BUFMOV CX, NCLD/NEXT: STOSBDEC CX JNZ NEXTRET/3-21 欲将数据段中自 AREA1中的100个字数据搬到附加段中以AREA2开始的区中,用下面的3种传送指令编写程序段:11111 .用MOV指令;2.用基本串传送指令;3.用重复串传送指令 解:1. LEALEAMOVCLDAGAIN: MOVMOVINCINCINCINCSI, AREA1DI, AREA2CX, 100A
25、X, SI ES:DI, AXSISIDIDI1212DEC CXJNZ AGAINRET2.MOVSI, OFFSETAREA1MOVDI, OFFSETAREA2MOVCX, 100CLDAREA2 , AREA1AGAIN: MOVSDEC CXJNZ AGAINRET3. MOV SI, OFFSET AREA1MOV DI, OFFSET AREAA2CLDMOV CX, 100REP MOVSBRET 3-22 假定在数据段中已知字符串和未知字符串的定义如下:STRING1 DB MESSAGE AND PROCCESS '/STRING2 DB 20 DUP用串操作指令编
26、写完成下列功能的程序段(设DS和ES重叠);/1 .从左到右把 STRING1中的字符串搬到 STRING2中;/2 .从右到左把 STRING1中的字符串搬到 STRING2中;/3 .搜索STRING1字符串中是否有空格。如有,记下第一个空格的地址,并放入 BX中;4 .比较STRING1和STRING2字符串是否相同。解:1. MOV SI, OFFSET STRING1/MOV DI, OFFSET STRING2MOV CX, 20;共20个字符CLD;从左到右就是增址方向,设置 DF-0REP MOVS STRING2 , STRING12. MOV SI, OFFSET STRI
27、NG1+13H /MOV DI, OFFSET STRING2+13HMOV CX, 20STD;从右到左为减址方向,设置DF-0REP MOVS STRING2+13H, STRING1+13H3.MOV DI, OFFSET STRING1MOV CX, 20MOV AL, 20H;空格字符的CLD REPNZ SCASB JZ FOUNDASCII 码MOV DI, 0JMP DONEFOUND; DEC DI;因SCASB的功能是:(1) (AL)DI(2) DI -DI+1MOV BX, DIDENE: HLT4.MOV SI, OFFSET STRING1MOV DI, OFFSE
28、T STRING2MOV CX, 20CLDREPZ CMPSBJNZ UMMA TMOV AL, 0JMP OUTPUTUMMA T: MOV AL, 0FFHOUTPUT: MOV RESULT, ALRET3-23 下面两条短转移指令的转移地址ADDR1和ADDR2分别是多少(用十六进制表示)?1.0220 EB 0A JMP ADDR12. 0230 EB F7 JMP ADDR2解:1 .e为当前IP与目的地址的距离。/已知位移量e的计算公式:3=目的地址一(IP源+2),即0AH=目的地址一(IP 源+23) =ADDR1 0222H所以,ADDR1=0AH+0222H=022CH
29、 (正向转移)2 . 3=目的地址一(IP源+2)0F7H=ADDR2 0232H1314所以,ADDR2=0F7H+0232H=0229H (负向转移)3-24 NEAR JMP, SHORT JMP,LOOP和条件转移指令的转移范围是多少?解:(1) NEAR JMP :目标地址距 JMP指令+3276732768字节范围以内。(2) SHORT JMP:目标地址距/JMP指令+127128字节范围以内。(3) LOOP:所转去的目标地址在 +127 128字节范围以内,为 LOOP SHORT_LABEL(4) 条件转移指令:目的地址OPRD为近标号,即转向的目标地址必须在转移指令的+1
30、27 128字节范围以内。2-25 设AX和CX中的内容为无符号数,BX和DX中的内容为带符号数,试用CMP指令和条件转移指令实现以下判断:1.若(AX)超过(CX),则转至 BIGER。 2.若(BX) > (DX),则转至 BIGE。3.若(CX)低于(AX),则转至 LESS。4.若(DX) > (BX),则转至 LESS。5.若(AX ) = (CX),则转至 EQUAL。解:1. CMP AX, CXJA BIGER2. CMP BX, DXJG BIGER3. CMP CX, AXJB LESS4. CMP DX, BXJL LESS5. CMP AX, CXJZ EQUAL3-26 (略)/3-27试编写一个程序段,能完成下列数学表达式的功能/1 (X -1)/X 0(-1<X<1)/1 (X 1)解1:MOV AL, XCMP AL,-1/JLE ANS1/CMP AL,1JL ANS21414JMP ANS3A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 头发用刷产业规划专项研究报告
- 冰茶匙市场发展预测和趋势分析
- 头发用漂白剂产业规划专项研究报告
- 学习布莱尔盲文用积木市场需求与消费特点分析
- 人教版英语八年级下册 Unit 1 单元复习
- 半导体收音机产业深度调研及未来发展现状趋势
- 截石钳产业深度调研及未来发展现状趋势
- 儿童自行车用轮胎市场需求与消费特点分析
- 高一数学说课稿10篇
- 城市电力与通信管道施工方案
- 工厂围墙视频监控系统方案及报价书
- 方位介词附习题及参考答案
- “二十四节气”研究性报告
- 个人挂靠公司协议书(大全)
- 危险化学品物质氮气(N2)安全告知卡
- 五年级上册数学课件-一二单元 北师大版 (共 33 张ppt)
- 一年级数学上册课件《分与合》第2课时6、7的分与合
- 国内外静脉输液的现状与发展
- 医美整形全套上墙制度
- DBJ04-T 402-2020城乡养老设施建设标准
- 蓝色卡通风2022小学六年级班干部竞选PPT动态模板
评论
0/150
提交评论