第3、4章作业(汇编部分)_第1页
第3、4章作业(汇编部分)_第2页
第3、4章作业(汇编部分)_第3页
第3、4章作业(汇编部分)_第4页
第3、4章作业(汇编部分)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章8086指令系统01二月2023101二月2023201二月202326、分别用一条指令完成下列要求。(1)将寄存器BX的内容传送给CX:MOVCX,BX(2)将立即数1234H传送给AXMOVAX,1234H(3)把数据段中偏移地址为20H的存储单元的传送给AX寄存器MOVAX,[20H](4)把字节数据20H传送到BX指定的存储单元地址中MOVbyteptr[BX],20H01二月2023301二月202338、假定(BX)=3000H,(SI)=1200H,(X)=300H,指出下列操作数中源操作数的寻址方式,同时写出各指令源操作数的地址。(1)MOVAX,1234H源操作数寻址方式:立即数寻址方式;(2)MOVAX,X源操作数寻址方式:直接寻址方式;EA=300H;(3)MOVAX,[BX]源操作数寻址方式:寄存器间接寻址方式;EA=(BX)=3000H;01二月2023401二月202348、假定(BX)=3000H,(SI)=1200H,(X)=300H,指出下列操作数中源操作数的寻址方式,同时写出各指令源操作数的地址。(4)MOVAX,[BX+SI]:源操作数的寻址方式:基址变址寻址方式;EA=(BX)+(SI)=4200H;(5)MOVAX,X[BX][SI]源操作数的寻址方式:相对基址变址寻址方式;EA=(BX)+(SI)+X=4500H;(6)MOVAX,BX源操作数的寻址方式:寄存器寻址方式;01二月2023501二月2023510、设(DS)=1000H,(ES)=1500H,(SS)=2000H,(BX)=0010H,(BP)=00A0H,(SI)=0100H,指出下列操作数中源操作数的寻址方式,并计算其物理地址。(1)MOVAX,[0200H]物理地址=(DS)×16+0200H=10200H(2)MOVAX,[BX]物理地址=(DS)×16+(BX)=1000H×16+0010H=10010H(3)MOVAX,ES:[BX]物理地址=(ES)×16+(BX)=1500H×16+0010H=15010H直接寻址方式寄存器间接寻址方式寄存器间接寻址方式01二月2023601二月2023610、设(DS)=1000H,(ES)=1500H,(SS)=2000H,(BX)=0010H,(BP)=00A0H,(SI)=0100H,指出下列操作数中源操作数的寻址方式,并计算其物理地址。(4)MOVAX,SS:[BX]物理地址=(SS)×16+(BX)=2000H×16+0010H=20010H(5)MOVAX,[BP]物理地址=(SS)×16+(BP)=2000H×16+00A0H=200A0H(6)MOVAX,[BX]+100H物理地址=DS×16+(BX)+100H =1000H×16+0010H+100H=10110H寄存器间接寻址方式寄存器间接寻址方式寄存器相对寻址方式01二月2023701二月2023710、设(DS)=1000H,(ES)=1500H,(SS)=2000H,(BX)=0010H,(BP)=00A0H,(SI)=0100H,指出下列操作数中源操作数的寻址方式,并计算其物理地址。(7)MOVAX,[BX][SI]物理地址=DS×16+(BX)+(SI) =1000H×16+0010H+0100H=10110H(8)MOVAX,100H[BX][SI]物理地址=DS×16+(BX)+(SI)+100H =1000×16+0010H+0100H=10210H(9)MOVAX,[SI]物理地址=DS×16+(SI)=1000H×16+0100H=10100H基址变址寻址方式相对基址变址寻址方式寄存器间接寻址方式01二月2023801二月2023811、指出下列指令的错误原因。(1)MOVAL,1234H操作类型不匹配;(2)MOVCS,AX目的操作数不能是CS段寄存器;(3)MOV[1000],1000h指令的操作类型不明确;需使用PTR显式地指明目的操作数[1000]的数据类型;01二月2023901二月2023911、指出下列指令的错误原因。(4)MOVBYTEPTR[BX],1000H两个操作数的类型不匹配;(5)PUSHAL堆栈操作指令的操作数应是字数据,而AL是字节型的;(6)XCHGDS,AXXCHG指令中的操作数不能为段寄存器;01二月20231001二月20231011、指出下列指令的错误原因(7)SHLAX,5若移位的位数大于1,则使用CL在指令中表示移位次数;(8)XCHG[BX],[SI]两个操作数同时为存储单元寻址方式,且两个数据的类型不确定;(9)INAX,[BX]IN指令中应使用DX存放IO端口地址;01二月20231101二月20231111、指出下列指令的错误原因。(10)DEC[SI]操作数类型不确定;(11)NEG1234HNEG指令中操作数不能为立即数;(12)MUL05H乘法指令的操作数不能是立即数;01二月20231201二月20231211、指出下列指令的错误原因(13)DIVAX,BX16位系统中,DIV指令是单操作数指令;(14)LEAAX,0100HLEA指令的源操作数只能是存储单元寻址方式;(15)AND[BX],[SI]两个操作数同时是存储单元;01二月20231301二月20231312、设(DS)=1000H,

(SS)=2000H,

(BX)=0100H,

(BP)=0200H,

(SI)=0100H,写出下列指令执行后AX的内容。(1)MOVAX,0100H(AX)=0100H(2)MOVAX,[0100H]PA=(DS)×16+0100H=10100H(AX)=1020H(3)MOVAX,[BX]PA=DS×16+(BX)=10100H(AX)=1020H2010……2020……305010100H10200H20200H01二月20231401二月20231412、设(DS)=1000H,

(SS)=2000H,

(BX)=0100H,

(BP)=0200H,

(SI)=0100H,写出下列指令执行后AX的内容。(4)MOVAX,[BP]PA=(SS)×16+(BP)=20200H(AX)=5030H(5)MOVAX,100H+[BX]PA=(DS)×16+100H+(BX) =10000H+100H+0100H=10200H(AX)=2020H2010……2020……305010100H10200H20200H01二月20231501二月20231512、设(DS)=1000H,

(SS)=2000H,

(BX)=0100H,

(BP)=0200H,

(SI)=0100H,写出下列指令执行后AX的内容。(6)MOVAX,[BX][SI]PA=(DS)×16+(BX)+(SI) =10200H(AX)=2020H(7)MOVAX,[SI]PA=(DS)×16+(SI) =10000H+0100H=10100H(AX)=1020H2010……2020……305010100H10200H20200H01二月20231601二月20231613、已知(DS)=1000H,

(SS)=0F00H,

(BX)=0010H,要使下列指令的源操作数指向同一个物理地址10320H,写出下列指令中寄存器BP、SI、DI和位移量X的值。(1)MOVAX,[SI](SI)=10320H-(DS)×16=10320H-10000H=0320H(2)MOVAX,[BP](BP)=10320H-(SS)×16=10320H-0F000H=1320H(3)MOVAX,[BX+DI](DI)=10320H-(DS)×16-(BX) =10320H-10000H-0010H=0310H(4)MOVAX,X[BX+SI](SI)=10320H-(DS)×16-(BX)-(SI) =10320H-10000H-0010H-320H=-10H01二月20231701二月20231714、下列程序段中,各指令执行后AX,CF、OF、ZF和SF的内容如何变化。指令AXCFOFZFSFMOVAX,00000H————DECAX0FFFFH0001NOTAX0000H0001ANDAX,0FFFFH0000H0010CMPAX,0FFFFH0000H1000SUBAX,1200H0EE00H1001MOVCX,50EE00H1001SARAX,10F700H0001SARAX,CL0FFB8H0—01ADDAX,0FFFFH0FFB7H1001NEGAX0049H100001二月20231801二月20231816、写出实现下列功能的指令或程序段。(1)将AL中的1、3、5位变反。测试数据为:00101010B,即2AHXORAL,2AH(2)判断AL中的1、3、5位是否均为1。若是将AL置1,否则将AL置0。多位同时为0可用TEST指令测试;故先将AL中的值取反,再判断;(2)解答

MOVBL,AL

NOTBL

TESTBL,2AH JZNEXT MOVAL,0

JMPEXITNEXT: MOVAL,1EXIT:……01二月20231901二月20231916、写出实现下列功能的指令或程序段。(3)将AL中的高4位与BL中的低4位、AL中的低4位与BL中的高4位交换。 MOVDL,AL MOVDH,BL MOVCL,4

RORDL,CL MOVBL,DL

RORDH,CL MOVAL,DHA7A6A5A4A3A2A1A0ALB7B6B5B4B3B2B1B0BLB3B2B1B0B7B6B5B4ALA3A2A1A0A7A6A5A4BL01二月20232001二月20232016、写出实现下列功能的指令或程序段。(4)将标志寄存器的内容传送到AX。 PUSHF POPAX(5)将标志寄存器的TF位清0 PUSHF POPAX ANDAX,0FEFFH PUSHAX POPFP47最后一行01二月20232101二月20232116、写出实现下列功能的指令或程序段。(6)将双字内容逻辑右移4位。设X位双字变量。假定双字数据在变量X中; MOVAX,wordptrX MOVDX,wordptrX+2 MOVCX,4NEXT:SHRDX,1 RCRAX,1 LOOPNEXT MOVwordptrX,AX MOVwordptrX+2,DX01二月20232201二月20232216、写出实现下列功能的指令或程序段。(7)将偏移地址为0100H开始的连续100个字节的数据单元传送到同一数据段中偏移地址为0150H的数据区中。 MOVSI,100H MOVCX,100AGAIN:MOVAL,[SI] MOV[SI+50H],AL INCSI LOOPAGAIN01二月20232301二月20232316、写出实现下列功能的指令或程序段。(8)将A单元中的内容与B单元中的内容相乘后,结果保存中在C1单元的连续两个字节中。 MOVAL,A MULB MOVwordptrC1,AX第4章MASM汇编语言知识01二月20232401二月2023253、说明下列两条语句的区别(1)XDB12H此语句中定义的X是一个变量;此语句可为X分配相应空间,其数值在内存中占一个字节;符号X可表示一个存储单元地址;(2)XEQU12H此语句中定义的X是一个常量;此语句并不会为X分配相应空间;符号X仅代替数值12H。01二月2023264、指出下列数据段定义后,各数据在内存储器中的分配情况。DATASEGMENT A DB 1,2,3,4 B DB ‘1’,’2’,’3’,’4’ C DW 1,2,3,4 D EQU 1234H E DD 1234HDATAENDSD是常量,不分配内存空间;01020304313233340100ABC+202000300040034120000CD5、设某数据段如下试指出(1)STR1的偏移地址100H(2)NUM是多少STR1所占存储单元的个数,即0AH;(3)STR2+3的存储单元的内容字符“O”;01二月202327A、B、NUM均为常量;不分配内存空间;ORG100H A=12H B=A+10H STR1DB‘DATASTRING’ NUMEQU$-STR1 STR2DB‘INFORMATION’01二月2023286、下列程序段运行后,Y单元开始的存储区存放的数据是什么? XDB78H YDB3DUP(?)

… LEASI,Y MOVCX,3 MOVAL,XLOP:SARAL,1 MOV[SI],ALINCSILOOPLOP

78------XY78H=01111000B右移一位:00111100B=3CH3C右移一位:00011110B=1EH1E右移一位:00001111B=0FH0F7、下列程序段有何功能?01二月202329 XDB300DUP(?) YDB100DUP(?)

… MOVCX,100 MOVBX,200 MOVSI,0 MOVDI,SILOP:SARAL,X[BX+SI] MOVY[DI],ALINCSIINCDILOOPLOP

[X+200+SI][Y+DI]其中,SI、DI同步变化。程序功能:

将X的后100个字节单元中的数据复制到Y单元中。01二月2023308、下列程序段有何功能?如果运行程序时从键盘上输入字符‘4’,则结果是什么?STR1DB'ABCDEFHI' ……

MOVAH,01H INT21H ANDAL,0FH

DECAL XORAH,AH

MOVBX,OFFSETSTR1 ADDBX,AX

MOVDL,[BX] MOVAH,02H INT21H变量名不能为STR从键盘输入一个数字字符,并转换为数值将输入数值减1,并扩展为字数据AX将BX指向STR1中偏移量为AX的字符将指定字符显示若程序运行时,从键盘上输入字符“4”,则在屏幕上会显示字符“D”。01二月2023319、已知数据定义为“

WDATDW1234H,5678H”,并且SI=2,写出下列指令单独执行后的结果。(1)MOVAX,WDAT(AX)=1234H(2)MOVAX,WDAT+2(AX)=5678HH(3)MOVAX,WDAT+[SI](AX)=5678HH01二月20233211、使用一伪指令语句完成下列要求。(1)将数据12H、34H、56H、0ABH依次存放在字节数组ARRAY中。ARRAYDB12H,34H,56H,0ABH(2)在字数组DARRY中依次存放数据1234H、5678H和0ABCDH。DARRYDW1234H,5678H,0ABCDH(3)将压缩的BCD码1234存放在BCD单元中。BCDDB12H,34H01二月20233311、使用一伪指令语句完成下列要求。(4)将字符串’STRING’存放在数组STR1中。STR1DB‘STRING$’(5)在数据区DATA1中连续存放字节数据12H、34H,字符数据’A’

、’B’、’C’,字数据1234H、5678H、0ABCDHDATA1DB12H,34H DB‘A’,’B’,’C’ DW1234H

,5678H

,0ABCDH12、使用一条指令语句完成下列要求。(1)将栈顶内容弹至字变量STAK中。POPSTAK(2)将双字变量DVAR存放的地址指针送到ES和SI。LESSI,DVAR(3)把变量VAR的类型属性送到AX中。MOVAX,TYPEVAR(4)取字符串变量VSTR的首地址送到AX中。LEAAX,VSTR01二月20233414、设有数据段定义如右,试完成如下要求:(1)用一条指令将DAT1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论