汇编语言习题答案3_第1页
汇编语言习题答案3_第2页
汇编语言习题答案3_第3页
汇编语言习题答案3_第4页
汇编语言习题答案3_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

第15页第3章自测练习一、选择题〔四选一〕C。A变量B常量C标号D偏移量2.汇编语言中的变量有多种类型属性,但错误的类型是B。A字节型byteB字符型charC字型wordD双字型dword3.执行movbx,segvar指令,BX得到变量var的B。A物理地址B段地址C偏移地址D内容4.MASM语句中,采用C分隔标号和指令。A逗号B分号C冒号D空格5.欲设定从偏移地址100H开场安排程序,可使用A伪指令。Aorg100hBstart=100hCstartdb100hDstartequ100h“movbx,offsetvar〞指令等效的指令是D。Amovbx,varB1dsbx,varClesbx,varD1eabx,var.bufdbl0dup(3dup(?,10),3,10)汇编后,变量buf占有的存储单元字节数是B。A100B80C40D20“numldw(12or6and2)ge0eh〞,定义的num1单元的内容是B。A0B0FFFFHC1D0FFH9.要求将A、B两个字符的ASCII码41H和42H顺序存放在连续两个字节存储单元中,可选用的语句是A。Adb`AB'Bdw`AB'Cdb0ABHDdw0ABH10.在汇编语言程序中,对END语句表达正确的选项是C。AEND语句是一可执行语句BEND语句表示程序执行到此完毕CEND语句表示源程序到此完毕DEND语句在汇编后要产生机器码11.下面的数据传送指令中,错误的操作是D。Amovss:[bx+di],byteptr10hBmovdx,l000hCmovwordptr[bx],1000hDmovds,2000h12.下面指令执行后,变量dab中的内容是C。dawdw2A05hdabdb0Fahmoval,byteptrdawsubdab,alA0DAHB0FAHC0F5HD0D0H13.根据下面的语句序列,AX存放器的内容是C。tabdb1,2,3,4,5,6entryequ3movbx,offsettabaddbx,entrymovax,[bx]A0405HB0304HC0504HD0403H14.假设V1和V2是用DW定义的变量,以下指令中正确的选项是 A。AmovV1,20hBmovV1,V2Cmoval,V1Dmov2000h,V215.假设定义xyzdw`A',那么xyz字存储单元中存放的数据是A。A0041HB4100HC0061HD6100H16.使用伪指令定义:valdb2dup(1,2,3dup(3),2dup(1,0),1)那么在val存储区内前10个字节单元的数据是D。A1,2,3,3,2,1,0,1,2,3B1,2,3,3,3,3,2,1,0,1C2,1,2,3,3,2,1,0,2,1D1,2,3,3,3,1,0,1,0,1二、填空题汇编语言源程序,它必须由__汇编_______程序将它转换成二进制的机器语言程序,这种机器语言程序被称为_____目标代码程序_____,而转换的过程称为__汇编__________。它还必须用__连接________程序连接,才能生成可执行的程序._ASM__,目标程序的扩展名是_OBJ_______,通常产生的可执行程序的扩展名是__EXE_______·3.汇编语言语句中,源操作数和目的操作数采用,〔逗号〕分隔。“cmpax,80h〞中源操作数的寻址方式是立即寻址方式。“datavardb0a5h,5bh〞,填空指令“movbx,__wordptrdatavar〞,使该指令无语法错误。6.假设操作结果为零转向标号goon,应使用的语句为_jzgoon(或jegoon)_________。“loopagain〞功能等效的两条指令依次是_deccx_和__jnzagain_。“dw1234h〞语句定义的一个字,如果改用db定义时,语句应为_db34h,12h_____________。9.定义wdatadwl020h,那么执行moval,bytewdata指令后,AL=_20h____。10.如下数据定义:V1db4dup(2),2countequ10V2ddcountdup(?)为变量V1分配5个字节存储;为变量V2分配40个字节存储.11.现有变量定义如下:arydw10dup(?)试填写执行如下指令的结果:movax,typeary;AX=_2_________movbx,lengthary;BX=__10_________movcx,sizeary;CX=___20________12.数据段如下:org0100harydw3,$+4,5,6cntequ$-arydb1,2,cnt,3那么执行如下指令后,AX=_0106h____,BX=_0308h_____。movax,ary+2movbx,ary+10MASM的操作符“$〞表示当前偏移地址,所以ary定义的$+4=102h+4=106h。同理,cnt=$-ary=108h-100h=813.程序段如下:blkdb46h,84h,34h,-5,20h,22h,73hmovcx,7leasi,blknext:moval,[si]incsitestal,81hloopznextmovbl,[si]该程序段运行后,AL=_84h_____、BL=__34h_______。第一次顺序执行到test指令时,al=84h.84h和81h相逻辑与的结果是80h,将使zf=0。随后执行loopz指令,因为zf≠1而终止循环;此时al=84h,因为si已经加1指向后一个数据,所以bl=34h。;数据段avardw0bvardw0cvardw10,20,30;代码段leabx,cvarmovax,[bx]movbvar,axmovax,[bx+2]addax,bvarmovavar,ax执行后,avar=30。三、问答题1.汇编语言中,伪指令语句与硬指令语句的本质区别是什么?硬指令:每个硬指令就是一个处理器指令,在CPU执行时产生相应功能;伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进展汇编。2.汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。=1\*GB3①编辑:用纯文本编辑程序源程序,产生ASM源程序。=2\*GB3②汇编:用汇编程序汇编源程序,产生OBJ目标程序。=3\*GB3③连接:用连接程序将目标程序转换为EXE可执行程序。=4\*GB3④调试:用调试程序调试可执行程序。3.源程序中如何指明程序执行的起始点?通常在起始指令设置一个标号〔例如START〕,然后用“ENDSTART〞伪指令说明该标号的指令为起始点。4.标号有哪三个属性?其含义是什么?段地址:表示标号所在代码段的段地址。偏移地址:表示标号所在代码段的段内偏移地址。类型:引用该标号时,表示它所在同一个段——NEAR类型,还是另外一个段——FAR类型。5.说明如下两条语句的区别:①xyz1db75②xyz2equ75①“xyz1db75〞语句定义了一个字节变量xyz1,在主存存放了一个75的数据。②“xyz2equ75〞语句说明了一个常量xyz2,它代表75,它在主存中并没有存放任何内容。6.以下语句在存储器中分别为变量数据区分配多少个字节单元?①var5dd10分配4个字节单元②var6dw4dup(?),2分配10个字节单元四、程序阅读题1.下述程序段运行后,从Bxyz单元开场依次存放的数据是什么?Axyzdb0F8hBxyzdb3dup(?)leadi,Bxyzmovcx,3moval,Axyzlop:saral,1mov[di],alincdilooplop从Bxyz单元开场依次存放0FCH、0FEH、0FFH2.现有源程序如下:;数据段org100hblockdwl,2,3,4,5,6,7,8,9countequ($-block)/2resultdwcount,?;代码段leabx,block-2movcx,resultxorax,axgoon:addbx,2cmpax,[bx]jaenextmovax,[bx]next:loopgoonmovresult+2,ax该程序段执行完后:①result+2字存储单元的内容是什么?result+2字存储单元的内容是9〔最大值〕②BX等于多少?BX等于110H③程序循环了多少次?程序循环了9次3.现有以下数据段:stringdb`ABCDEFGHIJKL'countequ$-stringbufferdbcountdup(0)下面程序段是实现把string中所有字符逆向传送到buffer缓冲区(即将string中第一个字符送到buffer的最后一个单元,sting中最后一字符送到buffer的第一个单元,……)。请把程序中所空缺的指令填上。movsi,offsetbuffer-1movdi,offsetbuffermovcx,countcldagain:movsb__subsi,2____loopagain此题中目的存储区用DI指示首地址,源存储区用SI指示尾地址,以便实现逆向传送。如果串传送指令MOVSB采用增量方式〔CLD指令〕那么DI和SI都自动加1,而实际上SI需要的是减1,所以第二个空缺位置应该填上“SUBSI,2〞。4.说明如下程序段完成什么功能dxyz1db300dup(?)dxyz2dbl00dup(?)movcx,100movbx,200movsi,0movdi,sinext:moval,dxyz1[bx][si]movdxyz2[di],alincsiincdiloopnext将dxyz1后100个数据传送到dxyz2缓冲区。五、程序设计题1.分别用一个说明性语句完成如下要求:①将数据56h、78、0b3h、100依次存放在字节变量onebyte中;onebytedb56h、78、0b3h、100②字变量twoword依次存放数据3721h、l0h、100、4936h;twoworddw3721h、l0h、100、4936h;③将字符串“Howareyou!〞存入变量fourmsg;fourmsgdb‘Howareyou!’④以fivemulti为首地址,连续存放字节数据,2个23h,5个`A',10个1和2,25个预留单元。fivemultidb2dup(23h),5dup(`A'),10dup(1,2),25dup(?)2.分别用一个执行性语句完成如下要求:①栈顶内容弹出送字变量stkw;popstkw②双字变量memd存放的地址指针送ES和SI;lessi,memd③变量vars类型属性送AX;movax,typevars④取字符串变量msg00的首地址送BX;movbx,offsetmsg003.按照给定的条件为程序定义一个数据段:①datal是字符串THISISADATA_SEGMENT;②data2是字节变量,初值为23、4BH、126、D3H;③data3是16位数据变量,初值为100、255、3、5、3、5、3、5;④data4是16位数据变量,但只知需要占有100个存储单元;⑤data5变量存放data4变量的数据个数.datasegsegmentdata1db‘THISISADATA_SEGMENT’data2db23,4BH,126,0D3Hdata3dw100,255,3dup(3、5)data4dw50dup(?)data5dwlengthdata4datasegends4.假设有一个数据段:buf1dbl00dup(`z')buf2dw1234h,5678,0abhbuf3db20dup(?)buf4db9,8,7,6,5请分别用一条语句完成如下操作:①将buf1的偏移地址送入BX;movoffsetbuf1②将buf2的第4个字节数据送DH;movdh,byteptrbuf2[4]③将数据9fh送入buf3的第10个存储单元;movbuf3[10],9fh④将buf4中最后一个单元内容加1,但不能改变标志CF的状态;incbuf4+4⑤计算buf1和buf3两者所占存储单元字节个数送CX。Movcx,sizebuf1+sizebuf35.现要将具有20个字符的string1字符串移到同一个数据段的string2中,请定义数据段,编写代码段.String1db‘abcdefghijklmnopqrst’;假设一个字符串String2db20dup(?);代码段〔也可以用串传送指令〕movcx,20movsi,offsetstring1movdi,offsetstring2movds,axmoves,axcldrepmovsb

温馨提示

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

评论

0/150

提交评论