1106复习题参考答案_第1页
1106复习题参考答案_第2页
1106复习题参考答案_第3页
1106复习题参考答案_第4页
1106复习题参考答案_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

、简答题1、一条机器指令包括哪两个部分,各有什么作用?操作码说明指令的功能,地址码说明怎样做(所操作的数据或数据位置)。2、内存RAM勺特点什么?存储内容可以动态地变化,每隔一定时间刷新一遍,每次读出后需根据原存内容全部刷新一遍3、8088内有20根地址线,其寻址空间是多少字节?1M4、Intel8086CPU的字长为多少位,地址总线为多少位,寻址范围为多少?16位,20位,1M5、什么是汇编语言?汇编指令一般由那二部分组成?用助记符表示操作码和机器指令一一对应的遵循一定语法规则的语言。由操作码与操作数组成6、写出将源程序A1汇编并运行的步骤与键盘命令。MASMA1/LINKA1/A17、写出汇编语言源程序的基本架构。DATASEGMENTDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HCODEENDSENDSTART8、用户为了解决自己的问题,用汇编语言所编写的程序,称为什么程序?源程序9、汇编语言源程序中,每个语句可由四项组成,其中标号是一个符号,其取名有什么规则?由字母打头、由至多31个字母、数字及规定的特殊字符(?、 @_、$)等组成。例Variable,不能由数字打头。10、指令指针寄存器是什么?其意义是什么?IP总指向下一条将执行的指令的地址。11、DB-80H在机内存储形式是什么?80H12、LOOPZREP却复的条件是什么?CX<>CfiZF为1 (相等重复)13、IBMPC微处理器主要由那些部件构成?运算部件、控制部件、接口部件14、在PC机中,一个段的大小不能超过多少个字节?64KB15、在一般指令中使用DI寄存器进行存储器寻址时,系统默认的段寄存器是什么?在用操作指令中呢?在一般指令中使用DI寄存器进行存储器寻址时默认DG在用操彳指令中DI寄存器为目的寄存器,默认ES16、数据段地址一般存放在哪个段寄存器中?DS17、物理地址由那二部分组成?段地址、偏移地址18、现欲用debug程序调试程序A1.EXE,已知结果存放在DX中。简述运行debug调入程序、反汇编、运行全过程。Debug<程序名>/U/G=019、在指令语句操作数项上,引用一个段名其意义是什么?所定的段的段地址20、在DEBUGF,可用于执行指令或程序的命令有那些?可用于反汇编的命令是什么?查看命令是什么?可用于单步执行的命令是什么?GT、P/U/D/T21、一条指令为MOVBXX1,其中X1的偏移地址为16(十进制),其值为28(十进制)。在DEBUG*反汇编,显示的本指令源程序代码会变为什么内容。MOVBX[0010] ;属于直接寻址方式22、在访问存储器操作数地址时,可以提供偏移地址的寄存器是什么?BX,BP,SI,DI23、在段内寻址时可以提供偏移地址的寄存器组是什么?BP、BXSI、DI24、若X补=1101010®则X原=?10010101B25、十六进制数88H,如果要写成:无符号十进制数、带符号十进制数、十进制数压缩型BCD®、8位二进制数-8的补码各怎样写?136,-119,88H,78H26、将二进制数11100111B分别转换成十进制数和十六进制数。231,0E7H27、设N=45831D求用十六进制数表示0BC728、设N=1945D求用压缩的BCM表示和在内存中的存放形式19H45H/45H ,19H29、已知语句:VARDW1,2,$+2,5,6在汇编时分配的地址是0010H,则汇编后0014H单元的内容是多少?16H30、假设存储器中从 7462H单元开始的四个相邻字节单元中的内容依次是32H,46H,52H,OFEH贝U存放字数据OFE52H勺字地址是什么?7464H31、为在一连续的存储单元中,依次存放数据 41H,42H,43H,44H,45H,46H,可选用的数据定义语句如果用字节类型、用字类型、双字类型且数据用ABCDD?字符,各如何表示?DB'ABCDEFDW'BA,'DC,'FEDD'DCBA','FE'32、在数据定义语句中怎样实现留空 100H个字节存储单元? VAR1DD10HDUPQ)语句实现留空多少个字节单元?VAR1DD10HDUP(?,0,0)语句呢?DB100HDUP(?)DW80HDUP(?)DD40HDUP(?)(40H,12*10H)33、有语句:COUNTEQULE80HCOUNT 是一个什么量?是否占有存储单元?常量,在程序中是立即数,等于0,不占存储单元34、THIS与LABEL®义是什么?定义一个新的类型的标号,段与偏移地址与紧接定义的下一个变量相同。35、有符号定义语句如下,问L的值是多少?DATASEGMENTBUFFDB1,2,3,'123'EBUFFDW0LEQU$-BUFF836、已定义数据:BUFDW234AH在指令ADDAX,BUF[BX]中源操作数的寻址方式是什么?操作数在什么地方?操作数的物理地址如何表达?相对寻址,数据区偏移地址 =BUF+(BX) 物理地址:(DS)*16+BUF+(BX)37、在指令CMPAX[BX+SI]中源操作数的寻址方式是什么?操作数在什么地方?操作数的物理地址如何表达?基址加变址,数据区偏移地址=(BX)+(SI),(DS*16+(BX)+(SI)38、在数据区定义了:DA2DB'A','B','C','D'执行语句: MOVAX,WORDPTRDA2+1后AX中的值是什么?'CB'39、DATASEGMENTVAR1DB12H,34H()VAR2DB10HDUP(O)ADR1DWVAR1,VAR2DATAENDS为使ADR1+2?存储单元中内容为0030H,上述括号中如果用ORG用DB,各使用什么语句?ORG30HDB2EHDUP(0)40、已知数据区如下所示,DD1DD2DD翁分配多少个字节单元?ADD1DD 'ab','cd'BDD2DW10DUP(?),2CDD3DT'A'8,22,1041、说明什么是立即寻址、间接寻址、相对寻址、基址变址寻址?操作数各在什么地方?立即寻址源操作数为常数,操作数存放在代码段中。其他寻址为存储器寻址,操作数在数据段中。42、MOVAX,[1234H]指令中的源操作数的寻址方式是什么?目的操作数的寻址方式又是什么?直接寻址 寄存器寻址43、已知BX=028AH,SI=0294H(DS:051EH)=5432H执行语句LEABX,[BX+SI]后,BX中的内容是什么?051EH44、设BX=1234H,DS=2000H,(21234H)=5678HJ时旨令“LEASI,[BX]”执行后的结果是什么?1234H45、设有如下数据定义与程序代码:ORG100HNUMEQU8042HDA1DB56HMOVBX,0FFSETDA1上述程序段执行后BX中的值是什么?100H46、假设某数据段段名为DATA,VAR是该段中的一个变量,若实现将该段的段地址送入AX中,可用“MOVAX,DATA语句实现,还可以用什么语句实现。MOVAXSEGVAR47、完成下列操作,选用什么指令:(1)将BX的内容,减去75AAH和上次运算的借位;SBBBX75AAH(2)将变量名X的段地址送DI;MOVDISEGX48、将AX的内容送入以SP为指针的堆栈中,使用什么语句? SP的值将如何变化?PUSHAX。SP的值减249、堆栈中用来指示其中任意数据的偏移地址的寄存器是什么?BP问址50、当堆栈为空时,如SS=2000HSP=100H栈底将存入的字单元的物理地址是什么?怎样理解SP总是指向栈顶的?如果设置堆栈段空间的语句是:DB100HDUP(0),且假如分配给堆栈段的段地址为2000H那么:SS=2000HSP=100H其物理地址是20100H;栈底如果存入一字,SP将减2,其物理地址是200FEHSP总是指向栈顶的,如果有PUSH操作,总是将数据压到SP所指单元的上面(2个单元)51、执行POPBP指令时,源操作数的偏移地址可以如何表示?物理地址表达式是什么?(SP),16*SS+(SP)52、执行PUSHBP旨令时,目的操作数的物理地址表达式是?16*SS+(SP)53、用操作指令中,每次操作后使SI/DI为减量应设置那一个标志位?DF=1,STD54、选用用操作指令时,需要注意些什么操作?,那些要求事先写累加器?置方向标志位DF,根据用操作指令设置重复次数并送入CX设置源操作数及目的操作数指针。注意源、目的操作数的段地址规定分别放在 DS与ES中。REPNZSCASB前和REPSTOSB前要写累力口器55、在用操作指令前使用重复前缀指令REPE终止用的重复操作条件是什么?CX=0或ZF=056、说明MOVSCMPSSCASSTOSLODS&意义是什么?用传送指令MOVSIDSSI所指的一个用传送到ES:DI所指处。用比较指令CMPStDSSI所指的一个用和ES:DI所指的一个用进行比较,同时改变SI、DI的值,并置ZF。用搜索指令SCAS等AL或AX中内容和ES:DI所指的一个用中一个元素进行比较,同时改变DI的值,并置ZF。用置数指令STOS将AL或AX中内容放到ES:DI所指的一个用的中一个元素中,同时改变DI的值。用读数指令LOD纵DS:SI所指的一个用的取一个元素到AL或AX中,同时改变SI的值。57、已知(AX)=0A3H若执行SUBAX,64H,将使标志寄存器的那些位置1?OF58、指令:DECXCHGLEASHL执行后,那些影响CF的值?SHL59、设AL=0A8H,CL=23HW亍乘法指令MULCL后,标志位OF,CF的值分别是什么?OF=1,CF=160、执行INC指令要影响那些标志位?OF,AF,PF,SF,ZF61、执行除法指令后,影响的标志位是那些?AF,CF,OF,PF,SF,ZF都不确定62、假设(AL)=0FFH ADDAL,0FH指令后,标志位ZF和SF的状态分别是什么?0,0 (CF与AF置1,其他不变)63、当执行指令ADDAXBX后,若AX的内容为2BA0H设置的奇偶标志位PF=1,意义是什么?表示结果中低八位含1的个数为偶数64、完成将累加器AL清零,并使进位标志CF清零,可以使用些什么指令?ANDAL,00HXORAL,ALSUBAL,AL65、SAL指令在左移后,如果移位前后符号位有变化,那个标志位一定改变?那个标志位一定置1?SF一定改变,OF一定为166、表示加法结果溢出的标志寄存器是什么?允许产生中断时, IF等于什么?OF,167、执行DIVCL后余数在什么寄存器中?AH68、设AL=57H,BL=24H执行指令SUBAL,BL后,寄存器内容情况如何?AL=33H,BL=24H69、设CL=8,AL=0C8H执行SARAL,CL后,AL中的数据是什么?FFH70、假设执行指令前BX=5678H,CL=8指令ROLBX,CL执行后BX,CF等于多少?0,071、指令中所用到的操作数可存放于那三个地方?寄存器,存储器,立即数(在指令中)72、在移位指令中,用于指定移位位数的操作数只能是什么?移位位数大于1时用CL73、CWDJ操作是什么?字扩展为双字74、执行1号DOS系统功能调用,从键盘输入的字符值要求存放在那一寄存器中?AL77、循环指令LOO产生循环的条件是什么?CX内的值不为078、条件转移指令JZ,其测试条件是什么?ZF为179、条件转移指令JB产生程序转移的条件是什么?前面存在二个无符号数相减或比较,当小于时转移,其时 CF=1,ZF=080、设DS=2000HBX=1256H变量TABLE的偏移地址为20A1H,(232F7H)二3280H指令JMPBX执行后,IP的值是多少?JMPTABLE[BX执行后,IP的值又是多少?1256H,3280H81、用于表示无符号数大于或等于的条件转移指令是什么?用于表示带符号数大于或等于的条件转移指令是什么?JAE,JGE82、子程序的参数传送方式有那三种?寄存器、堆栈、存储器数据段(变量)二、判断题设数据段中有如下定义语句DA1DB12H,34HDA2DW12H,34HADRT=100H判断以下语句是否正确,如果有错,说明错误原因或修改为正确语句。1、INC100H;错,立即数做目的操作数2、ADD[CX],BX;错,不能用CX问址3、POPCS;错,不能写CS4、ADD[SI],10H;错,类型不清,改为ADDbyteptr[SI],10H5、MOV200HCX;错,目的操作数为立即数6、PUSHCH;错,堆栈操作为字类型,CHgfcCX7、CMP300,BL;错,300超过8位二进制数。另外,如果改为30H仍然是一种特殊错误,必须改为CMPBL30H8、JMPWORDPTRBX ;错,改为JMPBX9、MOVDS:[SI],ES:[DI];错,从存储器到存储器10、MOVDI,255H ;对,取立即数到存储器11、LEAAL,BUF;错,类型错,AL改AX12、DIV1000H;错,立即数不能做除数13、MOVDA,1AX;错,类型错14、MOVBXOFFSETDA1;对,取地址与变量类型无关15、MOV[BX+BP],BX;BX+BP搭配错,BX+BFBfc为BX+DI16、MOVCS,AX;错,不能写CS17、RCLCX,2;错,移位超过1位要用CL表示18、POPCS;错,不能写CS19、PUSHCS对,可以从CS读20、PORTEQU2000H对PORTEQU30H;错。重复定义PORT21、STRlDD'ABCD';错,DD后如果是字符要按16位16位写,上面改为'AB','CD'22、PUSH[20H+SI+BX];对,相对基址变址23、PORTEQUAFH;错,A前要力口024、CONTEQU035;错,35前不能用025、STR2DW'ABCD';错,溢出26、PORT1EQUAL;对,port1代表ALMOVPORT1,300 ;错。movport1,300 值超出范围,port1代表AL,只8位27、MOVAH,300 ;错,300超过8位28、PORT2=AL;错,等号后要用数字29、MOVBYTEPTRDA2+1,AX错,类型错30、LEABL,DA1[SI];类型错31、LDSDI,DA1[BX];偏题,取偏移地址到DI,再取其段地址到DS错,8086不用32、XCHGAL,OFH错,向立即数存入33、XCHG[SI],[DI];错,从存储器到存储器34、MOVDA1+1,AX;错,类型错35、MOVADRT[SI],AX;对,目的操作数是相对寻址36、MOVWORDPTR[ADRT],AX同上是一种特殊错误,目的操作数不能用立即寻址37、XCHGAX,DS;错,交换指令中不能使用段寄存器38、MOVWORDPTR[1000H],AX丁种特殊错误,目的操作数不能用默认段地址的直接寻址。如果是:MOVDS:[1000H],AX正确39、OUT283,AX;错,端口地址超过255时,要使用DX三、程序分析题1、已知AX=1234HMOVBX,AXNOTBXXORBX,AX上述程序段执行后,BX等于什么?如把XOR指令改为OR指令,那么程序段执行后,BX等于什么? FFFFH,FFFFH2、已知(AX)=FFFFHMOVDX,01STCADCDX,AXANDAL,0DH上述程序段执行后,(AX)等于什么?(DX)等于什么? 0B04H,1H3、阅读下列程序段,程序段每一句运行后,AX如何变化?CF如何变化?MOVAX,7452H;(AX)=7452H(CF尸ADDAL,AH;(AX)=74C6H(CF)=0DAA;(AX)=7426H(CF)=1XCHGAH,AL;(AX)=2674H(CF尸SUBAL,AH;(AX)=264EH(CF)=0DAS;(AX)=2648H(CF)=04、已知AX=7865H,BX=89AAH.阅读下列程序段,程序段运行后AX等于什么?BX等于什么?CF等于什么?CLC;(AX)=7865H(BX)=89AAH(CF)=0ADDAX,BX;(AX)=020FH(BX)=89AAH(CF)=1ORBX,AX;(AX)=020FH(BX)=8BAFH(CF)=0RCRAX,1;(AX)=0107H(BX)=8BAFH(CF)=1RCLBX,1;(AX)=0107H(BX)=175FH(CF)=15、VAR1DB56H,76H,87H,98H,0A9H11IMOVCX,WORDPTRVAR1;(BX)=0H(CX)=7656HANDCX,0AH;(BX)=0H(CX)=2HMOVBX,WORDPTRVAR1+3;(BX尸A998H(CX)=2HSARBX,CL ;(BX尸EA66H(CX)=2H程序段运行后,BX等于什么?CX等于什么?6、DA1DB12HDA2DB22HRESDB?MOVAL,DA1CMPAL,DA2JAEL1MOVRES,0JMPNEXTL1:MOVRES,0FFHNEXT:,,上述程序段运行后,(RES等于什么?ZF等于什么?(RES)=0(ZF)=07、DATASEGMENTORG3040HYY1DB30H,40HYY2DW3040HDATAENDS11IMOVBXOFFSETYY1MOVAX[BX]MOVCLBYTEPTRYY2+1MOVCHTYPEYY2上述程序段运行后,AX等于什么?BX等于什么?CX等于什么?BX3040HAX:4030HCX:0230H8、已知BUF开始的数据区中存放有10个大、小写字母,下面程序段完成的功能是什么?MOVCX10LEABX,BUFK2:MOVAL[BX]CMPAL'Z'JBEK1SUBAL20HMOV[BX],ALK1:INCBXLOOPK211I全部小写字母变大写放回原处9、ADW1234HBDW5678HPUSHAPUSHBPOPAPOPB试回答:A.上述程序段执行后(A)等于什么?(B)等于什么?B.设执行前SP=2000H,执彳T后SP等于什么?答案:A.(A)=5678H(B)=1234H

B.SP=2000H四、(写程序段)1、求以二进制形式显示BL中的字符的ASCII码的程序段MOVCL,8NEXT:MOVDL,0SALBL,1RCLDL,1ADDDL,30HMOVAH,2INT21HDECCLJNENEXTLEADX,CMOVAH,9INT21H2、DI中存放一个数据区的末地址,求将AX中的二进制数转换为十进制数并放到该数据区中的程序段。MOVBX,10 ; 准备除以10CHANGE10:MOVDX,0;将除数的高16位(在DX中)清0,DX也将用来存放余数DIVBX;DX,AXADDDL,30H;MOVBYTEPTR[DI],DL;DECDI ;CMPAX,0 ;JNZCHANGE10;除以BX(BX=10)余数变为ASCII码值存储十进制数到上一单元是否为0?不为0转CHANGE10除以BX(BX=10)余数变为ASCII码值存储十进制数到上一单元是否为0?不为0转CHANGE10MOVSI,OFFSETBUFMOVDX,0 ;MOVCX,COUNTMOVBX,10GET_ASC:MOVAL,[SI]SUBAL,30HMOVSI,OFFSETBUFMOVDX,0 ;MOVCX,COUNTMOVBX,10GET_ASC:MOVAL,[SI]SUBAL,30HMOVAH,0PUSHAX ;MOVAX,DXMULBX ;AXMOVDX,AXPOPAXADDDX,AX ;INCSI ;DECCXJNZGETASC消DX为0;置循环次数为COUNT取出一个字符减30H变二进制数转换为对应的数并置于AX中,转存堆栈内容乘10(DR-(DX)*10+(AX)使指针SI指向下一个字符

4、DI中存放一个数据区的末地址,求将AX中的二进制数转换为十六进制数并放到该数据区中的程序段。MOVBX,16 ;准备除以16CHANGE10:MOVDX,0;将除数的高16位(在DX中)清0,DX也将用来存放余数DIVBX ;DX,AX除以BX(BX=16)ADDDL,30H ;余数变为ASCII码值MOVBYTEPTR[DI],DL; 存"六进制数DECDI ;到「单元CMPAX,0 ;是否为0?JNZCHANGE10 ;不为0转CHANGE105、求以移位方式显示SI中的一个16进制数的程序段MOVBX,4 ;每个字显示4个16进制字符CHANGE10:MOVDX,SIMOVCX,4; 准备左移4位(除以16)RORDXMOVSI ,DXADDDL,30H ;一个16进制数变为ASCII码值CMPDL,3AH ;是否小于10?JBCHANGE12;如果小于10转显示ADDDL,7 ;否则为A到F之间数,加7CHANGE12:MOVAH,2; 显示1个字符INT21HDECBX ;处理下一个字符CMPBX,0 ;是否为0?JNZCHANGE10 ;不为0转CHANGE106、从键盘输入若干个ASCII码表示的十六进制数(0到大写F,不考虑可能输错的问题),输入数字的个数存放在 BL中,求将该数用二进制数显示的程序段。INPUT:MOVAH,01HINT21H ; 键盘输入SUBAL,30HCMPAL,0AHJLCHANGE ; 输入0-9SUBAL,07HCHANGE:MOVCL,4SHLDX,CLMOVAH,0ADDDX,AX ;(DX )—(DX)*16+(AX)DECBLJNZINPUTMOVBX,DX ; 取要显示的字符到BL中

移16移16次SALBX,1RCLDX,1ADDDX,30HMOVAH,2INT21HDECCLJNENEXT7、在字节变量ASC_BU的数据区中有COUNTb十进制数的ASCII码,求将其转换为压缩型MOVMOVMOV换为压缩型MOVMOVMOVBCD®放到字节变量BCDBU的数据区中的程序段。SI,OFFSETDI,OFFSETCX,COUNTASC_BUFBCDBUFEVEN1:MOVAL,[SI]ANDMOVANDMOVMULADDMOVADDINCDECJNZAL,0FHBL,[SI+1]BL,0FHDL,16DLAL,BL[DI],ALSI,2DICXEVEN1J;AL取第1EVEN1:MOVAL,[SI]ANDMOVANDMOVMULADDMOVADDINCDECJNZAL,0FHBL,[SI+1]BL,0FHDL,16DLAL,BL[DI],ALSI,2DICXEVEN1J;AL取第1个字清高4位为0取第2个字清高4位为0中数字左移16进制的一个字合并为1

保存个压缩型BCD®8、求编写程序语句块,实现Z=A+BA,B,Z的定义如下:ADB?BDW?ZDD?MOVAXADDALADCAHMOV0BXMOVWORDPTRZ+23XMOVWORDPTRZXXADB?BDW?ZDD?MOVAXADDALADCAHMOV0BXMOVWORDPTRZ+23XMOVWORDPTRZXX9、求编写程序语句块,实现ADW?BDB?ZDD?MOVAXASUBALBSBBAH0MOV0BXZ=A-BoA,B,Z的定义如下:MOVWORDPTRZ+23XMOVWORDPTRZ\X10、求计算在二个字节变量MOVMOVADDDAAAL,XBL,YAL,BL11MOVWORDPTRZ+23XMOVWORDPTRZ\X10、求计算在二个字节变量MOVMOVADDDAAAL,XBL,YAL,BL11、求计算在二个字节变量MOVMOVSUBDASAL,X

BL,Y

AL,BLX与Y中存放的压缩BCM的和的程序段;例如x=68H,表示压缩BC则68;例如y=28H,表示压缩BC则28;二进制加法:AL=68H+28H=90H;十进制调整:AL=96HX与Y中存放的压缩BCM的差的程序段;例如x:AL=68H,表示压缩BC则68;例如y:BL=28H,表示压缩BC则28;二进制减法:AL=68H-28H=40H;十进制调整:AL=40H12、已知AX与BX中各存放有压缩BCD®,求计算二者之差的程序段SUBAL,BLDASXCHGAL,AHSBBAL,BHDASXCHGAL,AH13、求程序段:将存储单元X中一个压缩型BCD®拆成二个非压缩型BCD®,高位BCD码存放在Z单元,低位BCD码存放在Y单元,再分别转换为对应的ASQI码。MOVALXMOVCL4SHRAL,CLORAL30HMOVZALMOVALXANDAL0FHORAL30HMOVYAL14、求计算在字变量X与字节变量Y中存放的非压缩BCM的和的程序段MOVMOV码9ADDMOVMOV码9ADDAAAAX,XBL,YAL,BL;X:例如0608H,表示非压缩BC则68;Y:例如BL=09H,表示非压缩BCD;二进制加法:AL=08H+09H=11H;十进制调整:AX=0707H;实现非压缩BCM力口法:68+9=7715、已知寄存器AX和BX分别存放有二个非压缩BCCB,求完成AX+B冷AX中的程序段(假设结果小于等于99)ADDAL,BLAAAXCHGAH,ALMOVCH,AH

ADDAL,BHAAAXCHGAH,ALMOVAL,CH16、求计算在字变量X与字节变量Y中存放的非压缩BCD码的差的程序段MOVAX,X ;例如AX=0608H,表示非压缩BC则68MOVBL,Y ;例如BL=09H,表示非压缩BC则9SUBAL,BL ;二进制减法:AL=08H-09H=FFHAAS ;十进制调整:AX=0509H;实现非压缩BCCB减法:68—9=59;AAA和AAS这两条指令影响AF和CF标志位,而对其余标志位均无定义。17、求计算在字节变量X与Y中存放的非压缩BCDK的乘积的程序段MOVAL,xMOVBL,yMULBLAAM18、求计算在字变量;例如AL=08H,表示非压缩BCMOVAL,xMOVBL,yMULBLAAM18、求计算在字变量;例如BL=09H,表示非压缩BC则9;二进制乘法:AX=08Hx09H=0048H;十进制乘法:AX=0702H;实现(16)非压缩BCM乘法:8X9=72X与字节变量Y中存放的非压缩BCM的商的程序段MOVAX,X ;例如AX=0608H,表示非压缩BCDK68MOVBL,Y ;例如BL=09H,表示非压缩BC则9AAD ;二进制扩展:AX=68=0044HDIVBL ;除法运算:商AL=07H,余数AH=05H;实现非压缩BCDK乘法:68=7X9+519、选用NOTANDORXO故辑指令编写一程序段,实现将AL第0位,第2位同时置1,其他位变反。NOTALORAL520、选用NOTANDORXO故辑指令编写一程序段,实现将AL第3位,第4位同时置0,其他位变反。NOTALANDAL0E7H21、求判AL和BL中的数据是否同号,若是,则把AL中的数据变负并送到AH中,否则O-AH的程序段。XORAL,BLJNSKMOVAH,0JMPEND0K:ORAL,80HMOVAH,ALEND0:,,22、求程序段:把X字单元内容取绝对值后送到Y中。XDW?YDW?MOVAX,XCMPAX0JNSKNEGAXK:MOVY,AX23、求程序段:用用指令在X开始的26个字节单元中依次存放A-Z的ASCII码,在Y开始的26个字节单元中依次存放Z—A的ASCII码。XDB26DUP(?)YDB26DUP(?)11ILEADI,XMOVAL,'A'MOVCX,26CLDLOP1:MOV[DI],ALINCALSTOSBLOOPLOP1MOVCX,26LOP2:DECALMOV[DI],ALSTOSBLOOPLOP224、设AX,BX中的数一个为正数,一个为负数,求程序段:将正数送到字单元X中存放。TESTAX,8000HJEK1MOV人BXJMPDONEK1:MOVXAXDONE25、现有下列数据段:DATASEGMENTSTR1DB'ABCDEFGHIJKL'COUNTEQU$-STR1BUFDBCOUNTDUP0)DATAENDS求程序段:把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUFI勺第一个单元)。MOVSI,OFFSETBUF-1MOVDI,OFFSETBUFMOVCXCOUNTCLDLOP:MOVSBSUBSI,2LOOPLOP26、从键盘上键入0到9中任一自然数X,用查表法求其立方值。求程序段DATASEGMENTBUFDB'0000010080270 'DB'64125216343512729'DATAENDSMOVAH,1INT21HSUBAL,30HMOVAH,3MULAHMOVBX,AXMOVDL,[BX]MOVAH,2INT21HINCBXMOVDL,[BX]MOVAH,2INT21HINCBXMOVDL,[BX]MOVAH,2INT21H27、设8255A的端口地址为60H~63H如果设置为方式0,端口A和C作为输入口,B作为输出口。试写出初始化程序段。MOVDX63HMOVAL99HOUTDXAL28、如果要求将从1000H起的20单元数据搬到 2000H起的20单元,求编程实现。方法1:START:MOVAX,DATAMOVDS,AXMOVES,AXSI,1000HMOVDI ,2000HMOVCX20HCLDREPMOVSB五、程序设计题说明:以下参考答案中只给出程序段,需自行补充成完整程序。1、BUFXBUFYffiBUFZ是3个有符号16进制数,编写一个比较相等关系的程序:(1)如果这3个数都不相等,则显示0;(2)如果这3个数中有两个数相等,则显示1;(3)如果这3个数都相等,则显示2。DATASEGMENTBUFXDW3027HBUFYDW5AB0HBUFZDW0B32AHDATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,0MOVAX,BUFXCMPAX,BUFYJNENEXT1INCCXNEXT1:CMPAX,BUFZJNENEXT2INCCXNEXT2:MOVAX,BUFYCMPAX,BUFZJNENEXT3INCCXNEXT3:CMPCX,2JLENEXT4MOVCX,2NEXT4:MOVDL,CXADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART2、已知三个无符号数A,B,C,存放在ADR开始的连续单元,编制完成下列操作的程序:若A,B,C同时为偶数,将FLAG单元置1;若同时为奇数,将FLAG单元置0;否则FLAG^元置全1。DATASEGMENTADRDW3257H,5891H,0B234HFLAGDB0DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCL,0MOVAX,ADRTESTAX,0001HJNZNEXT1INCCLNEXT1:MOVAX,ADR+2TESTAX,0001HJNZNEXT2INCCLNEXT2:MOVAX,ADR+4TESTAX,0001HJNZNEXT3INCCLNEXT3:CMPCX,0JZNEXT5CMPCL,3JZNEXT4MOVCL,0FFHJMPNEXT5NEXT4:MOVCL,1NEXT5:MOVFLAG,CLEXIT:MOVAH,4CHINT21HCODEENDSENDSTART3、编制程序求字节类型BUF起三个带符号数的中间数。中间数存放于A中(中间数即该数小于一数而大于另一数)。DATASEGMENTBUFDB28H,0B3H,59HADB?DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,BUFCMPAL,BUF+1JLNEXT1XCHGAL,BUF+1MOVBUF,ALNEXT1:MOVAL,BUF+1CMPAL,BUF+2JLNEXT2XCHGAL,BUF+2MOVBUF+1,ALNEXT2:MOVAL,BUF+1MOVA,ALNEXT:MOVAH,4CHINT21HCODEENDSENDSTART4、已知A,B,C存放在ADRFF始单元,编制程序使之按递增顺序存放在 NEVWF始的单元。设A,B,C为带符号数。MOVAL,BUFCMPAL,BUF+1JLNEXT1XCHGAL,BUF+1MOVBUF,ALNEXT1:MOVAL,BUF+1CMPAL,BUF+2JLNEXT2XCHGAL,BUF+2MOVBUF+1,ALNEXT2:5、编制程序计算:X*Y] (Y>0,X>0)S=1X/Y (X<0,Y<0=、IX+Yl (其它)设X,Y为双字节带符号数据,分别存放在DAXDAY单元,计算结果存入RLT单元。DATASEGMENTBUFXDW?BUFYDW?BUFZDW?DAXDW?DAYDW?DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,0MOVAX,DAXCMPAX,0JLNEXT1INCCX;X>=0NEXT1:MOVBX,DAYCMPBX,0JLNEXT2

INCCX;Y>=0NEXT2:CMPCX,2JZNEXT3;X*YCMPCX,0JZNEXT4;X /YADDAX,BXJONEXT5CMPAX,8000HJLNEXT5NEGAXNEXT5:MOVDAX,AXJMPEXIT1NEXT4:MOVDX,0IDIVBXMOVDAX,AXJMPEXIT1NEXT3:IMULBXMOVDAX,AXMOVDAY,DXEXIT1:MOVAH,4CHINT21HCODEENDSENDSTARTCOUN单元MEANPffi6、已知内存DATACOUN单元MEANPffiDATASEGMENTBUFDB27H,59H,0B3H,32H,8AHCOUNTEQU$-BUFMEANPDB?MEANMDB?DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,BUFMOVCX,COUNTMOVDI,0MOVBP,0MOVDX,0MOVBX,0MOVAH,0CLCL1:MOVAL,[SI]CMPAL,0JLNEXT1ADCDL,ALADCDH,AHINCDIJMPNEXT2NEXT1:NEGALADCBL,ALADCBH,AHNEXT2:INCSIINCBPLOOPL1NEGBXMOVCX,DIMOVAX,DXIDIVCLMOVMEANP,ALMOVAX,BXMOVCX,BPIDIVCLMOVMEANM,ALEXIT:MOVAH,4CHINT21HCODEENDSENDSTART7、已知三个带符号的字节数据a,b,c存放在ADRFF始的连续单元中,若a,b,c同时为正数则FLAG单元置0,若同时为负数,则FLAG单元置1,否则FLAGI元置全1,请编写完整源程序。DATASEGMENTADRDW3257H,5891H,0B234HFLAGDB0DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCL,0MOVAX,ADRTESTAX,8000H;测试结果若不为0,表示负数JZNEXT1INCCL;测试结果不为0,负数计数加1NEXT1:MOVAX,ADR+2TESTAX,8000HJZNEXT2INCCLNEXT2:MOVAX,ADR+4TESTAX,8000HJZNEXT3INCCLNEXT3:CMPCL,0;CL为0表示全正,为3表示全负JZNEXT5;CL为0表示全正转NEXT5CMPCL,3JZNEXT4;CL为3表示全负转NEXT4MOVCL,0FFHJMPNEXT5NEXT4:MOVCL,1;全负存1NEXT5:MOVFLAG,CL;全正存0,其他按赋值存EXIT:MOVAH,4CHINT21HCODEENDSENDSTART8、试编制一程序,判断CX和DX中第7,15位是否完全对应相同。如完全相同,CF置1,否则CF置0。ANDCX88HANDDX88HCMPCXDXSTC ;CF预置1JZNEXTCLC;不完全相同,CF清0NEXTMOVAH4CHINT21H

9、编写一程序,将AL的低4位与BL的低4位互换,AL和BL的高4位保持不变。MOVCX4ROLAX;AL高4位移到AH中去MOVCX4ROLBXXCHGALBLMOVCX4RORAX;还原AXMOVCX4RORBX10、X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的哪个数,并存入W找出不相等的哪个数,并存入W单元中,试编写完成上述功能的程序。MOVALXCMPALYJNZNEXT1;X<>Y转NEXT1MOVALZ;X=Y存ZMOVWALNEXT1CMPALZJNZNEXT2;X<>Z转NEXT2MOVALY;X=Z存YMOVWALNEXT2MOVWAL;X<>Y,X<>Z存X11、编程序段计算SUIVkEai=a1+a2+...+a20,已知al……a20依次存放在以BUF为首址的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。MOVAX0MOVBX ,OFFSETBUFMOVCX ,20LOP:ADDAX[BX]INCBXINCBXLOOPLOPMOVSUM,AX12、设在DAT单元存放一个—9到+9的字节数据,在SQRTA散据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTABP查找出DAT单元中数据对应的平方值送SQRI元。写出主程序与子程序完整程序。数据段如下:DATASEGMENTDATDB?SQRTABDB0,1,4,9,16,25,36,49,64,81SQRDB?DATAENDSSTACL1SEGMENTSTACKDW20HDUP(?)STACL1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACL1START:MOVAX,DATAMOVDS,AXCALLSUBROTMOVAH,4CHINT21HSUBROTPROCLEASI,SQRTABMOVAL,DATTESTAL,80H; 是否为负数?JNSNEXT; 不是NEGAL; 是则求补NEXT:MOVBL,ALMOVBH,0MOVAL,[BX+SI]MOVSQR,ALRETSUBROTENDPCODEENDSENDSTART12、设数据区有非压缩BCD码数据A、B定义例如:ADW0507HBDW0307H求计算A与B的和(其非压缩BCM不超过16位)、并用十进制形式显示的程序。DATASEGMENTADW0507HBDW0307HCDW0DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTA

温馨提示

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

最新文档

评论

0/150

提交评论