汇编语言程序设计习题-答案(共11页).doc
《汇编语言程序设计习题-答案(共11页).doc》由会员分享,可在线阅读,更多相关《汇编语言程序设计习题-答案(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上4.1 分析执行下列指令序列后的结果: 1)MOVAX,1234H MOVBX,00FFH ANDAX,BX【答】(AX)=0034H2)MOVAL,B ANDAL,B;(AL)=B ORAL,B;(AL)=B XORAL,B;(AL)=B NOTAL【答】(AL)=B3)MOVDL,05H MOVAX,0A00H MOVDS,AX MOVSI,0H MOVCX,0FH AGAIN:INCSI CMPSI,DL LOOPNEAGAIN HLT 本程序实现了什么功能?【答】在以0A001H开始的15个单元中查找05H。4)MOVAX,DSEGADDR MOVDS, AX
2、 MOVES,AX MOVSI, OFFSET B1ADDR MOVDI,OFFSET B2ADDR MOVCX,N CLD REPMOVSB HLT 本程序实现了什么功能?【答】 将B1ADDR中N个字节数据传送到B2ADDR开始的15个存储单元 。 5)MOVAX, 0H MOVDS,AX MOVES, AX MOVAL,05H MOVDI,0A000H MOVCX,0FH CLD AGAIN:SCASBLOOPNEAGAIN HLT本程序实现了什么功能?【答】从地址0A000H开始的15个单元中查找字节型数据05H,用条件循环LOOPNZ,控制数据05H的查找。4.2 阅读程序:1).C
3、LD LEADI,0100H MOVCX, 0080H XORAX, AX REPSTOSW 本程序实现了什么功能?【答】将DS中起始地址为0100H的128个字节单元清零。2).MOVAL, 08H SALAL,01H;(AL)=H MOVBL, AL MOVCL ,02H SALAL,CL;(AL)=H ADDAL,BL;(AL)=H 本程序实现了什么功能? 【答】 将AL中的内容乘以10。4.3 试分析下列程序完成什么功能? MOVDX,3F08HMOVAH,0A2HMOVCL,4 SHLDX,CL;(DX)=F080H MOVBL,AHSHLBL,CL;(BL)=20H SHRBL,C
4、L;(BL)=02H ORDL,BL;(DL)=82H 【答】将DX中的低4位数据8H分离出来,将AH中的低4位数据2H分离出来,合并为82H存放在DL。4.4 已知程序段如下: MOVAX,1234H MOVCL,4 ROLAX,CLDECAXMOVCX,4MULCX 试问:(1)每条指令执行后,AX寄存器的内容是什么?(2)每条指令执行后,CF,SF及ZF的值分别是什么?(3)程序运行结束时,AX及DX寄存器的值为多少? 【答】MOVAX,1234H; (AX)=1234H, CF=SF=ZF=0 MOVCL,4 ROLAX,CL; (AX)=2341H ,CF=1,SF=ZF=0 DEC
5、AX; (AX)=2340H,CF=1,SF=ZF=0 MOVCX,4;MULCX;(AX)= 8000H ,CF=ZF=0,SF=1,DX=04.5 试分析下列程序段: ADDAX,BX JNCL2 SUBAX,BX JNCL3 JMPSHORTL5 如果AX、BX的内容给定如下: AXBX (1)14C6H80DCH (程序转向 L2)(2)B568H54B7H (程序转向 SHORTL5 )问该程序在上述情况下执行后,程序转向何处? 【答】(1) 程序转向 L2。(2) 程序转向 SHORTL5。4.6 以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节? DATASEG
6、MENT VAR1DW9 ;2字节VAR2DD10 DUP(?),2 ;44字节VAR3DB2 DUP(?,10 DUP(?) ;22字节VAR4DB HOW ARE YOU ;11字节DATA ENDS【答】该数据段共占79字节。4.7 下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。 VAR1DB10,2 ;2字节VAR2DW5DUP(?),0 ;12字节VAR3DBHOW ARE YOU?,$ ;13字节VAR4DD-1,1,0 ;2字节Var1Var2Var3Var410?HFFH2?OFFH?WFFH?FFH?A01H?R00H?E00H?00H?Y00H?O0
7、0H0U00H0?00H$4.8 编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。【答】参考程序:OLDSDB 1,2,3,4,5NEWSDB 1,2,3,4,5RESULTDB ?MOVSI,OFFSET OLDSMOVDI,OFFSET NEWSMOVCX,10CLD REPCMPSB JNZNOEQU ;串不相等转MOVAL,0JMPOUTPT NOEQU:MOVAL,0FFH OUTPT:MOV RESULT,ALSTOP:JMPSTOP4.9 编程求和Y=A1 + A2 + . + A100 。其中Ai为字节变量。【答】参考程序:D
8、ATASEGMENTTABLEDW 12,3,45,.YALDW ?YAHDW ?DATAENDS .MIANPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVDX,0XORAX, AX;清AXMOVBX, OFFSET TABLEMOVCX, 4CLCLP: ADDAX, BX;求和JNCDONINCDXCLC DON: INCBXINCBX;指向下一个数LOOPLP;未加完,继续MOVYAL,AX;存和MOVYAH,DXMAINENDPCODEENDSEND START4.10 内存中以FIRST和SECOND开始的单元中分别存放着两个16
9、位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。【答】参考程序:1325+9839=?DATA SEGMENTFIRSTDB 05H,02H,03H,01H ;SECONDDB 09H,03H, 08H,09H;THIRDDB 20 DUP (?)DATAENDSSTACKSEGMENTST1DB100 DUP (SA)TOP1 EQU LENGTH ST1STACK ENDSCODESEGMENTASUMMECS:CODE,DS:DATA,SS:STACKMAINPROCFARSTART:MOVAX, DAT;初始化数据段MOVDS,
10、AXMOVAX, STACK;初始化堆栈段MOVSS, AXMOVAX, TOP1MOVSP, AXMOVCX, 4;计算4次MOVBX, OFFSETDAT1;取数据地址MOVSI , OFFSETDAT2;取数据地址MOVDI , OFFSET SUM;取结果地址MOVAH, 00H;将暂存标志的AH清0DON1:MOVAL, BX;取第一个数 SAHF;将AH中的标志送标志寄存器ADCAL, DI;与第二个数带进位加AAA;十进制校正LAHF;将标志寄存器内容送AHORAL, 30H;计算值拼成ASCII码MOVDI, AL;存结果的ASCII码INCBX;指向第一个数的下一位INCSI
11、;指向第二个数的下一位INCDI;指向结果单元的下一位LOOPDON1;未计算完,继续ANDAH, 01H;将最高位的进位标志送AHORAH, 30H;最高位的进位位拼成ASCII码MOVDI, AH;存结果的最高位MOVAH, 02H;调用DOS的02H功能显示MOVCX, 05H;显示数据的位数DON2: MOVDL,DI;显示数据送DLINT21H;显示DECDI;显示数据所在存储单元加一LOOPDON2;未显示完,继续MOVAH, 4CH;返回DOSINT21H RET MAINENDP CODEENDS ENDSTART 4.11 试编程序,统计由40000H开始的16K个单元中所存
12、放的字符“A“的个数,并将结果存放在DX中。【答】参考程序DATA SEGMENT DATA1DB DFASFAAAFDFAAFFFACOUNTEQU $-DATA1DATAENDSSTACKSEGMENTSTA DB 100 DUP (?)TOP EQU LENGTH STA STACK ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVCX,COUNTMOVDX,0LEASI,DATA1MOVBL,A NEXT :CMPSI,
13、BLJNZOTHERINCDXOTHER:INCSILOOPNEXTCODEENDSEND BEGIN4.12 统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。【答】参考程序:BLOCKDB -1,-3,5,6,-2,0,20,10 PLUS_DDB 8 DUP(?);正数缓冲区MINUS_DDB 8 DUP(?);负数缓冲区PLUSDB 0MINUSDB 0MOVSI,OFFSET BLOCKMOVDI,OFFSET PLUS_DMOVBX,OFFSET MINUS_DMOVCX, 8;数据个数送CXGOON:LODSB;AL SITESTAX,80HJNZJMIUS;为负数
14、,转INCPLUS;正数个数加一STOSB ;DI AL,传正数JMPAGAINJMIUS:INCMINUS;负数个数加一XCHGBX,DISTOSB;送负数到缓冲区XCHGBX,DIAGAIN: DECCXJNZGOON4.13 编写一个子程序将AX中的十六进制数,转换成ASCII码, 存于ADR开始的四个单元中。提示:1)、AX中的数从左到右,转换成ASCII码,用循环左移ROL和AND指令,把提出的一个十六进制数置BL中;2)、0 9 的ASCII码:30 39H,A F 的ASCII码:41H 46H。( 先把每个数加30H,判断是否为数字0 9?若是A F,再加07H,得字母的ASC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 习题 答案 11
限制150内