资源描述:
《最新编写程序教学内容.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.22试编写一程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B和B+2单元中。答:程序段如下:MOVAX,AMOVDX,A+2CMPDX,0JNSZHENSHU;不是负数则转走NEGDXNEGAXSBBDX,0ZHENSHU:MOVB,AXMOVB+2,DXINT20H3.30编写程序段,把字符串STRING中的‘&’字符用空格符代替。STRINGDB‘ThedateisFEB&03’答:程序段如下:MOVCX,18MOVAL,‘&’CLDMOVDI,SEGSTRINGMOVES,DI;ES段基地址LEADI,STR
2、INGREPNESCASB;不相等重复JNENEXT;相等跳转DECDIMOVES:BYTEPTR[DI],‘’;送空格符NEXT:┇3.31假设数据段中数据定义如下:STUDENT_NAMEDB30DUP(?)STUDENT_ADDRDB9DUP(?)PRINT_LINEDB132DUP(?)分别编写下列程序段:(1)用空格符清除PRINT_LINE域。(2)在STUDENT_ADDR中查找第一个‘-’。(3)在STUDENT_ADDR中查找最后一个‘-’。(4)如果STUDENT_NAME域中全是空格符时,填入‘*’。(5)把STU
3、DENT_NAME移到PRINT_LINE的前30个字节中,把STUDENT_ADDR移到PRINT_LINE的后9个字节中。答:公共的程序段如下:MOVDI,DSMOVES,DI(1)MOVCX,132MOVAL.,‘’;空格的ASCII码送AL寄存器CLDLEADI,PRINT_LINEREPSTOSB(2)MOVCX,9MOVAL.,‘-’CLDLEADI,STUDENT_ADDRREPNESCASBJNENO_DASHDECDINO_DASH:┇(3)MOVCX,9MOVAL.,‘-’STDLEADI,STUDENT_ADDRA
4、DDDI,9-1REPNESCASBJNENO_DASHINCDINO_DASH:┇(4)MOVCX,30MOVAL,‘’;空格的ASCII码送AL寄存器CLDLEADI,STUDENT_NAMEREPESCASBJNENEXTMOVCX,30MOVAL,‘*’;“*”的ASCII码送AL寄存器LEADI,STUDENT_NAMEREPSTOSBNEXT:┇(5)MOVCX,30CLDLEASI,STUDENT_NAMELEADI,PRINT_LINEREPMOVSBMOVCX,9STDLEASI,STUDENT_ADDR+9-1LEA
5、DI,PRINT_LINE+132-1REPMOVSB3.32编写一程序段:比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串则执行NEW_LESS;否则顺序执行程序。答:程序段如下:MOVCX,5CLDMOVDI,SEGOLDSMOVDS,DIMOVES,DILEASI,OLDSLEADI,NEWSREPECMPSBJNENEW_LESS┇NEW_LESS:┇3.47请编写一程序段,要求把ECX、EDX和ESI的内容相加,其和存入EDI寄存器中(不考虑溢出)。答:MOVEDI,0也可为:MOVEDI,EC
6、XADDEDI,ECXADDEDI,EDXADDEDI,EDXADDEDI,ESIADDEDI,ESI3.49试编写一程序段,要求把BL中的数除以CL中的数,并把其商乘以2,最后的结果存入DX寄存器中。答:MOVAL,BLMOVAH,0;假定为无符号数,否则用CBW指令即可DIVCLMOVAH,0SHLAX,1;逻辑左移1位MOVDX,AX原(BP)低字节原(BP)高字节存储器002EH002FH0030H0031H0032H0033H0034H0035H0036H0037H0038H0039H003AH003BH003CH003DH0
7、03EH003FH0040H堆栈帧原(SP)新(BP)新(SP)3.52题的答案3.51试编写一程序段,要求在长度为100H字节的数组中,找出大于42H的无符号数的个数并存入字节单元UP中;找出小于42H的无符号数的个数并存入字节单元DOWN中。答:JMPBEGIN;无条件转移UPDB0DOWNDB0TABLEDB100HDUP(?);数组BEGIN:MOVCX,100HMOVBX,-1;数组下标MOVSI,0MOVDI,0L1:INCBXCMPTABLE[BX],42HJAL2;高于JBL3;低于JMPL4;否则跳到L4L2:INCS
8、I;UPJMPL4L3:INCDI;DOWNL4:LOOPL1MOVUP,SIMOVDOWN,DI4.11试写出一个完整的数据段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10