文档介绍:
****题3:1、8086系统中,请说明下列指令的源操作数的寻址方式是什么?1)MOVAX,1234H立即寻址2)MOVAX,[1234H]直接寻址3)MOVAX,[BX]间接寻址 4)MOVAX,1234H[BX+SI]相对基址变址寻址5)MOVSB数据串寻址6)INAL,DX间接端口寻址2、请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表示一个字节),并写出变量var1,var2,t的值。30Hvar1DB-2,‘A’,2dup(‘23’)var2DW-1cntEQU$-var1var3DWvar2dataENDS答:var1:0030,var2:0036,var3:t=8.3、以下程序实现将变量var进行var*10+600的操作,并将计算结果保存在变量result中,当程序执行到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS的内容不用指定,表格的每个单元表示一个字)。(6分)高地址低地址datasegment vardw1000 resultdd?dataendsss_segsegmentstack db100dup(?) ss_segends codesegment assumecs:code,ds:data,ss:ss_seg mainprocfar pushds movax,0 pushax movax,data movds,ax movax,var M1: callCaculate M2: dw10 M3: dw600 M4: leabx,result mov[bx],ax mov[bx+2],dx ret mainendpCaculateproc push bpmov bp,sppush sipush bxmov bx,[bp+2]mov si,cs:[bx]mul siM5: add ax,cs:2[bx]add bx,4mov [bp+2],bxpop bxpop sipop bpretCaculate endpcodeendsendmain高地址低地址DS00HM2BPSIBX答:如下图,此时栈顶指针指向比bx所在单元地址小1的堆栈单元。4、问答题1)若AL=81H,则执行指令CBW后AH的内容为多少?答:AH的内容为FFH.2)若BL=BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?SHLBL,1;BL=__7CH___,CF=_1___MOVCL,2SHRBL,CL;BL=__1FH___,CF=___0___ORBL,80SARBL,1;BL=__CFH___,CF=___1___RORBL,CL;BL=___F3H__,CF=LRCLBL,CLBL=___9FH__,CF=____1__3)什么是短跳转、近跳转、远跳转?答,短跳转,是段内直接跳转,把IP的内容加上一个字节的补码数作为新的IP,跳转范围为-128~127.近跳转,是段内直接跳转,把IP的内容加上一个字的补码数作为新的IP,跳转范围为-32768~32767.远跳转,是段间直接跳转。4)若当前SP=1000H,CS=B000H,IP=0100H,且当前FLAG=2345H,则执行指令INT21H以后,SP的值变为多少?堆栈段中6个存储单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?答:SP=0FFAH,(0FFFH)=23H,(0FFEH)=45H,(0FFDH)=B0H,(0FFCH)=00H,(0FFB)=01H,(0FFA)=00H.5、请写出程序段实现下列功能例如:从160H端口读取1个字节MOVDX,160HINAL,DX将一个8位数20H写入到地址为20H的端口;答:MOVAL,20HOUT20H,AL若AL=56H,BL=57H,将这两个压缩格式BCD码相加并将结果保存到存储单元[2000H]中;答:ADDAL,BLDAAMOV[2000H],AL将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数中,请编写程序段。movax,datamovds,axleasi,resultsubax,axmov[si+4],axmov[si+6],axmovax,wordptrdata1mulwordptrdata2mov[si],axmov[si+2],dxmovax,wordptrdata1+2mulwordptrdata2add[si+2],axadc[si+4],dxadcwordptr[si+6],0movax,wordptrdata2+2mulwordptrdata1add[si+2],axadc[si+4],dxadcwordptr[si+6],0m
内容来自淘豆网www.taodocs.com转载请标明出处.