资源描述:
《电子科大教材-第五章作业解答》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、3.程序如下:(但不是唯一答案)答案一:MOVBL,ALMOVCL,4ROLBL,CLANDBL,OFHMOVDL,AHMOVCL,4ROLDL,CLANDDL,OFHMOVCL,AHANDCL,OFHANDAL,OFH答案二:MOVDL,AHANDDL,OFOHMOVCL,4SHRDL,CLMOVBL,ALANDBL,OFOHMOVCL,4SHRBL,CLANDAL,OFHMOVCL,AHANDCL,OFH5.答:段内无条件转移指令针对的目标地址和JMP指令本身在同一个代码段内,跳转时仅修改IP寄存器,把目标地址的偏移量送到IP保存;段间无
2、条件转移指令针对的目标地址可以和JMP指令本身不在同一个代码段内,跳转时修改CS、IP两个寄存器,把FI标地址的段基值送CS保存,把目标地址的偏移量送IP保存。只用JMP指令无法实现分支,因为JMP指令会无条件的修改程序的执行流程,执行JMP指令后CPU下一条将要执行的指令地址是固定不变的,不会根据任何条件判断來决定是否转移。因此,仅使用JMP指令是无法实现分支结构的。如果要在程序中实现分支结构,必须使用条件转移指令。7.注意分析程序,首先注意到:TESTAL,OAAH这条指令用于实现第一个分支结构的判断条件。这条指令的含义是测试(AL)的第
3、1、3、6、7位屮有没有为“1”的数据位1)如果没有,即ZF=1,执行:ANDAL,OAAH这条指令把(AL)的第2、4、6、8位清0,由于1、3、5、7位本身就为0,所以这样处理后(AL)=0o然后,程序流程会转向分支的出口END1,保存结果。得出这个分支的结论:如果VAR的第1,3,5,7位中没有为“1”的数据位,那么(RES)=0o2)如果有,即ZF=O,程序流程转到NEXT入口这里有一条指令:JNSPLUS由这条指令实现第二个分支,其含义是判断(AL)最高位是否为11)如果为1,即SF=1,那么程序顺序执行:DECAL然后程序流程转向
4、分支出口END1,保存结果。得出这个分支的结论:如果VAR的第1,3,5,7位中有为“1”的数据位,并且第7位是“1”,那么(RES)=(AL)-12)如果为0,即SF=1,那么程序流程转移到PLUS入口:INCAL然后程序流程转向分支出口END1,保存结果得出这个分支的结论:如果VAR的第1,3,5,7位中有为“1”的数据位,并且第7位不是“1”,那么(RES)=(AL)+19.完整程序如下:(不是唯一正确答案,仅供参考)DATASEGMENTADW?BDW?CDW?BIGDW?ADRDW?DATAENDSSTACK1SEGMENTSTAC
5、KDW30HDUP(0)STACK1ENDSCODESEGMENTASSUMEDS:DATA,SS:STACK1,CS:CODEBEGIN:MOVAX,DATAMOVDS,AXMOVAX,ALEABX,AMOVCX,2MOVSI,2LOP1:CMPAX,A[SI]JG(G1MOVAX,AJSI]LEABX,A[SI]G1:ADDSI,2LOOPLOP1MOVBIG,AXMOVADR,BXMOVAH,4CHINT21HCODEENDSENDBEGIN11.完整程序如下:(不是唯一答案,仅作参考)DATASEGMENTDAB1DB?DAB2DB?
6、DATAENDSSTACK1DWSTACK1SEGMENTSTACK30HDUP(0)ENDSDS:DATA,SS:STACK1,CS:CODECODESEGMENTBEGIN:MOVAX,DATAMOVDS,AXLEASI,DAB1MOVCX,2LOP1:TEST[SI],1JNZNO1ADD[SI],1NO1:INCSILOOPLOP1MOVAH,4CHINT21HASSUMECODEENDSENDBEGIN15.解:首先读懂程序,仿佛这个程序模拟了一个十进制进位调整,其实不然,这种题目只能按照程序流程每步把它算好。累加十次,累加的数据按
7、顺序为:1,3,5,7,1,3,5,7,1,3按照顺序给出各次循环的处理:1)(AX)=0001H2)(AX)=0004H3)(AX)=0009H4)(AX)=OOOOH5)(AX)=0001H己经进入重复状态了6)(AX)=0004H7)(AX)=0009H8)(AX)=OOOOH9)(AX)=0001H10)(AX)=0004H程序段执行完毕后(AX)=04H如果把LOOP指令替换为LOOPNE指令,那么在第一次循环时就会退出循环,(AX)=0001H,(CX)=917.程序如下:(不是唯一答案)DATASEGMENTARYW10DUP(
8、?)DATAENDSSTACK1SEGMENTSTACKDW30HDUP(0)STACK1ENDS;AL中存放最大数,AH中存放最小数CODESEGMENTASSU