您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 计算机硬件基础课后答案
2-18(1)1278H+3469H=0001001001111000+0011010001101001=0100011011100001SF=0ZF=0AF=1PF=1CF=0OF=0(2)54E3H-27A0H=0101010011100011+1101100001100000=10010110101000011SF=0ZF=0AF=0PF=0CF=0OF=0当进行16位或8位加或减运算时,若最高位产生进位或借位时,将CF置1,否则为0,当进行带符号数补码运算时,运算结果超出了机器所能表示的数值范围,就产生溢出,将OF置1,否则OF置0,即OF用来表示有符号数运算的溢出,而CF则用来表示无符号数运算的溢出。2-24答:存储慢速设备(存储器或I/O设备)的数据时,必须插入等待周期TW来延长总线周期,插入TW多少取决于CPU完成独立操作所需时间。2-26D读存储器00001写存储器010104-5DATASEGSEGMENTMY1BDB‘PERSONALCOMPUTER’MY2BDB20MY3BDB14HMY4BDB00010100BMY5WDW20DUP(?)MY6WEQU100DATASEGENDS4-6(1)BX=(2);(2)AL=(2);(3)CX=(10);(4)DL=(10).4-7(1)VAR1、VAR2、VAR3的偏移地址是30H,3AH,40H;(2)DATA1的值是50H,CNT的值是16;(3)VAR2+2的内容为2。4-8(2)X为字变量,Y则可以字节方式访问X;(4)X为字变量,初值放在内存中的顺序为88H和62H,Y为字节变量,初值依次为62H和88H;(5)X和Y均为字变量,初值不同,因为X为16进制数,Y为10进制数。IO/MDT/RDENRDWR4-9(1)源操作数1000超过字节范围(3)CMP的两个操作数不能同时为存储器操作数(5)JNZ的转移位置不能用字变量给出4-11(1)DATA1DB86H,27H,23H,00H,24H,1AH(2)DATA2DW0B430H,1062H或者(1)DATA1LABELBYTEARRAYDW2786H,23H,1A24H(2)DATA2LABELWORDARRAYDB30H,0B4H,62H,10H4-12DATASEGMENTWORDTABLEDB100DUP(0)DATAENDSSTACKSEGMENTWORDSTACK‘STACK’DB1024DUP(0)STACKENDSCODESEGMENT‘CODE’ASSUMEDS:DATA,SS:STACK,CS:CODEMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXLEABX,TABLEMOVCX,100LOP:MOVBYTEPTR[BX],64HINCBXLOOPLOPRETMAINENDPCODEENDSENDSTART4-15TRANMACROX,Y,Z;X,Y,Z为源、目标数据块的首地址,Z为数据块的长度MOVCX,ZMOVSI,OFFSETXMOVDI,OFFSETYCLDREPMOVSBENDM4-16MOVAX,WORDPTRXADDAX,WORDPTRYMOVWORDPTRZ,AXMOVAX,WORDPTRX+2ADCAX,WORDPTRY+2MOVWORDPTRZ+2,AX4-17DATASEGMENTSTRGDB1000DUP(?)STR1EQUSTRG+7STG2EQUSTRG+27STRSEEQU50DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAIN:MOVAX,DATAMOVDS,AXMOVES,AXMOVCX,STRSEMOVSI,OFFSETSTG1MOVDI,OFFSETSTG2CLDPUSHSIADDSI,STRSE-1CMPSI,DIPOPSIJLOKSTDADDSI,STRSE-1ADDDI,STRSE-1OK:REPMOVSBMOVAX,4C00HINT21HCODEENDSENDMAIN4-18(1)DATASEGMENTDATAENDSCODESEGMENT…MOVAH,01H;从键盘输入一个字符,其ASC码值在AL中INT21HCMPAL,41HJZP0CMPAL,42HJZP1…CMPAL,4AHJZP9JMPEXITP1:…RETP2:…RET……P9:…RETEXIT:MOVAH,4CHINT21H….(2)DATASEGMENTBASEDWP0,P1,……,P9DATAENDSCODESEGMENT…MOVAH,01H;从键盘输入一个字符,其ASC码值在AL中INT21HCMPAL,'A';判别字符是否位于‘A’到‘J’之间JBEXITCMPAL,'J'JAEXITSUBAL,'A';在正确范围之内,根据表内地址分支MOVBL,ALMOVBH,0SHLBX,1JMPBASE[BX]P1:…RETP2:…RET……P9:…RETEXIT:MOVAH,4CHINT21H….4-19LEABX,xLEASI,yLEADI,sumADDBX,7ADDSI,7ADDDI,8;和可能要9个字节MOVCX,8CLCLOP:MOVAL,[BX]ADCAL,[SI]DAAMOV[DI],ALDECBXDECSIDECDIDECCXJNZLOPMOVAL,0ADCAL,0MOV[DI],AL4-20MOVSI,OFFSETFIRSTMOVCX,0;CX中存放A的个数LOOP:MOVAL,[SI]CMPAL,‘$’JZNEXTCMPAL,‘A’JNELPINCCXLP:INCSIJMPLOOPNEXT:……4-21DATASEGMENTDATA_WDW…………;若干个数COUTEQU($-DATA_W)/2COUT1DB0COUT2DB0COUT3DB0DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(0)STACKENDSCODESEGMENTASSAUMCS:CODE,DS:DATASTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVDX,0;正数、负数、0暂时分别存在BL、BH、DL中MOVBX,0LEASI,DATA_WMOVCX,COUTNEXT:MOVAX,[SI]CMPAX,0JGLP1JLLP2INCDLJMPOKLP1:INCBLJMPOKLP2:INCBHOK:ADDSI,2LOOPNEXTMOVCOUNT1,BLMOVCOUNT2,BHMOVCOUNT3,DLRETSTARTENDPCODEENDSENDSTART4-22DATASEGMENTARRAYDB…………;若干个数COUTEQU$-ARRAYMAXDB?MINDB?DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(0)STACKENDSCODESEGMENTASSAUMCS:CODE,DS:DATASTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXLEABX,ARRAYMOVCX,COUTGOT:MOVAL,[BX]TESTAL,01HJZNEXTINCBXJMPGOTNEXT:MOVDH,ALMOVDL,AL;DH暂存最大偶数,DL暂存最小偶数,初始置首个偶数LEABX,ARRAYLOP:MOVAL,[BX]TESTAL,01HJNZNEXT2CMPAL,DLJANEXT1MOVDL,ALJMPNEXT2NEXT1:CMPAL,DHJBNEXT2MOVDH,ALNEXT2:INCBXLOOPLOPMOVMAX,DHMOVMIN,DLRETSTARTENDPCODEENDSENDSTART4-24LEABX,STRINGMOVCX,80NEXT:MOVAL,[BX]CMPAL,20HJZOKINCBXLOOPNEXTMOVCL,-1JMPFINOK:NEGCXADDCX,80FIN:…………4-25LEABX,STRINGMOVCH,0LOP:MOVAL,[BX]CMPAL,ODHJZEXITINCCHINCBXJMPLOPEXIT:…4-26(1)LEASI,STRING1LEADI,STRING2MOVCX,20CLDREPMOVSB(2)LEASI,STRING1LEADI,STRING2ADDSI,19ADDDI,19MOVCX,20STDREPMOVSB(3)MOVAL,20HLEADI,STRING1MOVCX,20CLDREPNZSCASBJZFOUNDMOVDL,0;未找到FOUND:DECDIMOVBX,DIMOVDL,01H;找到(4)LEASI,STRING1LEADI,STRING2MOVCX,20CLDREPCMPSBJNZNEQMOVBL,0;相同NEQ:MOVBL,01H;不相同4-28(1)DISPLAYPROCMOVCH,4MOVCL,4MOVBX,AX;(*)NEXT:ROLBX,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,39HJBEPRINTADDDL,07HPRINT:MOVAH,2INT21HDECCHJNZNEXTRETDISPLAYENDP(2)与(1)基本相同,仅将(*)语句修改为MOVBX,WORDTEMP(3)将(*)句替换为下列语句(假设子程序中并未保护现场寄存器,主程序入栈的参数就是预显示的数据)MOVBP,SPMOVBX,[BP+2]4-29;模块1,文件名MAIN.ASMEXTRNDISPLAY:FAR;引用外部符号PUBLICMESG;定义外部符号DATA1SEGMENTMESGDB'ASSEMBLER$'DATA1ENDSCODE1SEGMENTASSUMECS:CODE1,DS:DATA1MAIN:MOVAX,DATA1MOVDS,AX;装入段基址PUSHDSCALLDISPLAYMVAH,4CHINT21HCODE1ENDSENDMAIN;模块2,文件名DISPLAY.ASMEXTRNMESGPUBLICDISPLAY;定义外部符号DATA2SEGMENTDB100UP(?)DATA2ENDSCODE2SEGMENTASSUMECS:CODE2,DS:DATA2DISPLAYPROCFARMOVAX,DATA2MOVDS,AX;装入段基址MOVDX,OFFSETMESGMOVAH,9;屏幕显示INT21HRETDISPLAYENDPCODE2ENDS4-30SUM1PROCNEARCMPCX,0JZEXIT1MOVAX,0;数组和在AX中AGAIN:ADDAL,[SI]ADCAH,0;和或许为字INCSILOOPAGAINEXIT1:RETSUM1ENDP4-31STACKSEGMENTPARASTACK‘STACK’DB100DUP(0)STACKENDSCODESEGMENTASSAUMCS:CODESTARTPROCFARPUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVCX,4MOVDX,0.LOP1:MOVAH,1INT21HCMPAL,46HJAEXIT;字符ASCII码不在0~9,A~F之间CMPAL,40HJALOP2CMPAL,39HJAEXIT;字符ASCII码不在0~9,A~F之间CMPAL,30HJBEXIT;字符ASCII码不在0~9,A~F之间SUBAL,30HJMPNEXTLOP2:SUBAL,37HNEXT:MOVAH,0PUSHCXMOVCL,4ROLDX,CLPOPCXADDDX,AXLOOPLOP1EXIT:RETSTARTENDPCODEENDSENDSTART5-41KX8:末地址=1000H+3FFH
本文标题:计算机硬件基础课后答案
链接地址:https://www.777doc.com/doc-4518648 .html