《西南交大网络教育汇编语言程序设计第三次作业.doc》由会员分享,可在线阅读,更多相关《西南交大网络教育汇编语言程序设计第三次作业.doc(8页珍藏版)》请在三一办公上搜索。
1、汇编语言程序设计 第三次作业11.文件结尾的部分信息就没有被写入磁盘.从而造成写入的文件不完整。12.下面的ASCIZ串有什么错误?PATH_NAME DB C:PROGRAMSTEST.DAT答:此ASCIZ串的最后少了一个全0字节.应改为:PATH_NAME DB C:PROGRAMSTEST.DAT, 013.据定义如下:X1 DB 10H.100.1X2 DW 10H.100.1X3 DD?COUNT EQU X3X1变量COUNT的值是.其表示的意义是。答:9X1和X2两个变量所占内存字节单元的个数。写为内存单元的个数也正确。如果写为字单元则为错误14.执行指令MOV AX.0MOV
2、 AL.09HADD AL.4若要获得结果AX0103H.则在ADD指令之后.加一条指令.若要获得结果AL13H.在ADD指令之后加一条指令。答:DAAAAA15.实现AL中高四位置1的指令为。实现AL中高四位取反的指令为。答:ORAL.0F0HXOR AL.0F0H16.为中断向量区。答:最低1K字节0-3FFH0000开始的1K字节以上三个答案都正确17.X、Y、Z是双精度数.他们分别存放在X、X+2、Y、Y+2、Z、Z+2的内存单元中.高位字存放在高位地址中.低位字存放在低位地址中.下列指令序列实现X+Y+24-ZW。并且用W和W+2单元存放运算结果:MOVAX.XMOVDX.X+2AD
3、DAX.YADCDX.Y+2ADDAX.24SUBAX.ZSUBDX.Z+2MOVW.AXMOVW+2.DX分析以上指令序列.指出程序中出现的错误:;。答: 在ADD和SUB两条指令之间加上ADCDX.0仅仅写出这条指令就正确把SUB DX.Z+2改成SBB DX.Z+2仅仅写出这条指令就正确18.在数据段中有一个字符串.其长度是17.要求把他们传送到附加段中的一个缓冲区。DATA SEGMENT MESS1DBPERSONAL COMPUTERDATA ENDSEXTRA SEGMENTMESS2DB 17 DUPEXTRA ENDSCODE SEGMENTMAIN PROC FARASSU
4、MECS:CODE, DS:DATA,ES:EXTRASTART: PUSH DSSUB AX,AXPUSH AXLEA SI,MESS1LEA DI,MESS2CLDREP MOVSBRETMAIN ENDPCODE ENDS END START以上是完整的程序段.请分析主过程.修改主过程中的错误。1、;2、;3、;4、;5、。答: MOV AX.DATAMOV DS.AXMOV AX.EXTRAMOV ES.AXMOV CX.17只要写出以上5条指令就给分.每条指令1分。评分标准:指令中没有写出逗号、没有写对相应数据、写错操作码都视为错误答案。19.已知主程序和子程序之间的调用如下:STA
5、CK SEGMENTDB 100 DUPSTACK ENDSCODE1 SEGMENTASSUME CS:CODE1,SS:STACKBEG:MOVAX, 0A3BHMOVCX, 1234HCALLFARPTRAA;断点=1110H, =0200HCODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2AAPROCFARPUSHAXPUSHCXBB:RETAAENDPCODE2 ENDSENDBEG画出执行到标号BB时,堆栈的情况图。答:1234H0A3BH1110H0200H20.寄存器的二进制数用十六进制数的形式在屏幕上显示出来。答:1、CODE SEGMENTMAIN
6、 PROC FARASSUME CS:CODESTART:PUSH DSSUB AX.AXPUSH AXMOV CH.4ROTATE:MOV CL.4ROL BX.CLMOV AL.BLAND AL.0FHADD AL.30HCMP AL.3AHJL PRINTITADD AL.07HPRINTIT:MOV DL.ALMOV AH.2INT 21HDEC CHJNZ ROTATERETMAIN ENDPCODE ENDSEND START21.写出一段子程序.完成输出空行的功能。空出的行数在AX寄存器中。答:CODE SEGMENTMAIN PROC FARASSUME CS:CODESTAR
7、T:PUSH DSSUB AX,AXPUSH AXMOV AX,5OUTPUT:PUSH AXCALL DISPPOP AXDEC AX22.假定DS=2000H.SS=1500H.SI=00A0H.BX=0100H.BP=0010H则MOV AX.BX+10的寻址方式是;操作数的物理地址是。MOV AX.BPSI的寻址方式是;操作数的物理地址是。答:寄存器相对寻址物理地址:20110H基址变址寻址物理地址:150B0H23.如果TABLE为数据段中0032H单元的符号名.其中存放的内容为1234H.则执行MOV AX.TABLE后AX寄存器的内容是;执行LEA AX.TABLE后AX寄存器的
8、内容是。答:1234H0032H24.如果TABLE为数据段中0032H单元的符号名.其中存放的内容为1234H.则执行MOV AX.TABLE后AX寄存器的内容是;执行LEA AX.TABLE后AX寄存器的内容是。答:1234H0032H25.1、汇编语言程序上机操作的步骤是;。答:用编辑器编写汇编源程序ASM文件用MASM命令编译ASM文件为OBJ文件用LINK命令连接OBJ文件为EXE文件在DOS下运行程序查看结果或者进入DEBUG查看结果26.假设X和X+2单元的内容为双精度数P.Y和Y+2单元的内容为双精度数QX.Y为低位字.试说明下列程序段做什么工作?MOV DX.X+2MOV A
9、X.XADD AX.XADC DX.X+2CMP DX.Y+2JLL2JGL1CMP AX.YJBE L2L1:MOV AX.1JMP EXITL2:MOV AX.2EXIT:分析以上程序段。写出该程序段实现的功能:。答:程序功能:AX=12PQ=22PQ用语言描述也正确。27.MOV CL.4SHL DX.CLMOV BL.AHSHL AX.CLSHR BL.CLORDL.BL分析以上程序段。写出该程序段实现的功能:。答:程序功能:把DX AX构成的双精度数左移四位28.以下程序段实现从键盘输入一个十进制数并转换成二进制数.试分析程序并填写恰当的指令使程序完整。MOV BX,0NEWCHAR
10、:INT 21HSUB AL,30HJL EXITCMP AL,9DJG EXITXCHG AX,BXMOV CX,10DXCHG AX,BXADD BX,AXJMP NEWCHAREXIT:RET答:MOV AH.1CBWMUL CX29.下列程序段实现计算V-X*Y+Z-540/X.并把结果的商存入AX.余数存入DX.其中X.Y.Z.V都是16位带符号数.已经分别装入了X.Y.Z.V单元中。试分析程序并填写恰当的指令使程序完整。MOV AX.XIMUL YMOV CX.AXMOV BX.DXMOV AX.ZCWDADD CX.AXSUB CX.540MOV AX.VSUB AX.CXSBB
11、 DX.BXIDIV X答:ADC BX.DXSBB DX.0CWD平分标准:有写错指令操作码的不给分。30.在ADDR单元中存放着数据Y.试编写一程序把Y中1的个数存入COUNT单元中。答:DATA SEGMENTADDRDW YCOUNT DW?DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE.DS:DATASTART:PUSH DSSUB AX.AXPUSH AXMOV AX.DATAMOV DS.AXMOV CX.0MOV AX.ADDRREPEAT:TEST AX.0FFFFHJZ EXITJNS SHIFTINC CXSHIFT:SH
12、L AX.1JMP RETEATEXIT:MOV COUNT.CXRETMAIN ENDPCODE ENDSEND START31.设有5个学生的成绩分别是76.69.84.90.55。试编写程序统计成绩在80100,6079以及60分以下人数的个数分别存放在COUNT开始的三个字节单元中。答:DATA SEGMENTARRAYDB 76,69,84,90,55COUNTDB 3 DUPDATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE ,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,5MOV SI,0LOOP1: MOVAL,ARRAYSICMPAL,80JGE G80CMPAL,60JLL60INC COUNT1JMP L1G80: INC COUNT0JMP L1L60: INC COUNT2L1:INC SILOOP LOOP1RETMAIN ENDPCODE ENDSEND START8 / 8