实验1顺序程序设计一、实习题目两个多位十进制数相加。二、实习目的和要求1.学习数据传送和算术运算指令的用法。2.熟悉在PC机上建立、汇编、链接、调试和运行8088/8086汇编语言程序的过程。三、实习内容将两个多位十进制数相加,要求被加数、加数均以ASCⅡ码形式各自顺序存放在以DATA1和DATA2为首的五个内存单元中(低位在前),结果送回DATA1处。★供实习的题目编写程序计算S←(a+b)—2*(aANDb)。说明:输入两数a、b完成上述计算,结果存入变量S中。DATASEGMENTDATA1DB34H,35H,39H,38H,36H,'';被加数DATA2DB37H,34H,33H,36H,32H,'';加数DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,DATA1;有效地址送SI,为调用显示子程序做准备CALLDISPLAY;调用显示子程序CALLCRLF;调用回车换行子程序LEASI,DATA2;有效地址送SI,为调用显示子程序做准备,同时为加法运算做准备CALLDISPLAY;调用显示子程序CALLCRLF;调用回车换行子程序LEADI,DATA1;有效抵制送DI,为加法运算做准备MOVAX,0MOVBX,0MOVCL,05H;记录循环次数ADDS:MOVAL,[SI];将加数送往ALSUBAL,30HADDAL,BL;加上进位MOVBL,[DI];将被加数送往BLSUBBL,30HADDAL,BL;加法运算ADDAL,30HCMPAL,3AHJASUBA;结果=10,跳到SUBAJBNSUBASUBA:SUBAL,0AH;减去10的值,并置BL为1MOVBL,01HJMPCONTINUENSUBA:MOVBL,00H;置BL为0CONTINUE:MOV[DI],AL;将相加的结果从AL送往DI的地址,即DATA1的地址INCDI;地址加1INCSI;地址加1LOOPADDS;循环JCSHUCHUJNCSHUCHU2SHUCHU2:MOVAL,31H;CF为1设置结果最高位为1JMPCONTINUE2SHUCHU:MOVAL,30H;CF为0设置结果最高位为0CONTINUE2:MOV[DI],ALLEASI,DATA1;将DATA1的有效地址送往SI,为调用DISPLAY子程序做准备CALLDISPLAY;调用DISPLAY子程序MOVAX,4C00H;返回DOSINT21HMAINENDPCRLFPROCNEAR;回车、换行于功能MOVDL,0DHMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HRETCRLFENDPDISPLAYPROCNEAR;显示于功能MOVBX,0006H;记录循环次数DSL:MOVDL,[SI+BX-1];将有效地址内的内容送往DLMOVAH,02;2号功能输出INT21HDECBX;BX自动减1JNZDSLRETDISPLAYENDPCODEENDSENDSTART实验2BCD码相乘一、实习目的掌握用组合的BCD码表示数据、并熟悉怎样实现组合的BCD码乘法运算。二、实习内容实现BCD码的乘法,要求被乘数、乘数以组合的BCD码形式存放,各占一个内存单元,乘积存放在另外两个内存单元中。提示:1.明白组合与未组合BCD码。2.由于没有组合的BCD码乘法指令,程序采用以乘数作为累加次数值,将另一个乘数累加计数值次得到。DATASEGMENTADB''BDB''DATAENDSCODESEGMENTMAINPROCFARASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXLEASI,ALEADI,BMOVAX,0MOVBX,0CALLINPUTMOV[SI],ALCALLINPUTMOV[DI],ALANDAL,[SI]MOVBL,02H;MULAX,BXMOVAX,4C00H;返回DOSINT21HMAINENDPINPUTPROCNEARMOVAH,01HINT21HRETINPUTENDPCODEENDSENDSTART实验3分支程序设计实验一、实习题目小写字母转换成大写字母。二、实习目的1.掌握分支程序设计方法。2.了解小写字母和大写字母在计算机内的表示方法并显示。三、实习内容接收键盘输入字符,将其中的小写字母转换为大写字母并显示。★供实习的题目从键盘接收字符,判别该字符是否为字母、数字或非字母非数字类字符。CODESEGMENTMAINPROCFARASSUMECS:CODESTART:MOVAH,00HINT16HCMPAL,0DHJZOVERCALLJUDGEMOVDL,ALMOVAH,02HINT21HJMPSTARTOVER:MOVAH,4CHINT21HMAINENDPJUDGEPROCNEARCMPAL,'a'JBSTOPCMPAL,'z'JASTOPSUBAL,20HSTOP:RETJUDGEENDPCODEENDSENDSTART实验4循环程序设计实验一、实习题目统计男、女生人数程序。二、实习的目的掌握循环程序的基本设计方法。三、实习内容统计一个有10人的班中,男、女生的人数各为多少。将男生人数存入变量MAN、女生人数存入变量WOMAN中。提示:男、女生可用‘1’、‘0’字符作标志表示并从键盘输入标志。对输入的标志进行分类求和即可。★供实习题目题目:矩阵相乘程序实验目的:掌握多重循环程序的设计方法内容:将一个4*4的矩阵与一个4*1的矩阵相乘,将结果矩阵存入相应单元中。DATASEGMENTMANDB0,0WOMANDB0,0STRINGDB'iuputpeoplenumber!(manis0,womanis1)$'SMDB'manis:$'SWDB'womanis:$'DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,09H;将STRING的内容输出MOVDX,OFFSETSTRINGINT21HCALLCRLFMOVCX,10;男女生总人数AA:MOVAH,01H;从键盘输入,0为男,1为女INT21HCMPAL,30H;与'0'比较JNZADDW;不为'0',女生人数加1INCMAN;否则男生人数加1BB:LOOPAAJMPDISPLY;打印ADDW:INCWOMANJMPBBDISPLY:CALLCRLFMOVAH,09H;字符串输出MOVDX,OFFSETSMINT21HMOVAH,02H;男生人数统计结果输出MOVDL,MANADDDL,30HCALLJUDGECALLCRLFMOVAH,09H;字符串输出MOVDX,OFFSETSWINT21HMOVAH,02H;女生人数统计结果输出MOVDL,WOMANADDDL,30HCALLJUDGEMOVAH,4CH;返回DOSINT21HMAINENDPJUDGEPROCNEAR;判断结果是否为39HCMPDL,3AHJZSHICC:INT21HRETSHI:MOVDL,31HINT21HMOVDL,30HJMPCCJUDGEENDPCRLFPROCNEAR;回车换行子程序MOVAH,02H;回车MOVDL,0DHINT21HMOVDL,0AH;换行INT21HRETCRLFENDPCODEENDSENDSTART实验5子程序设计实验一、实习题目字符的输入显示格式。二、实习目的1.学习子程序的编写和调用方法。2.掌握字符的输入、显示方法。三、实习内容与要求1.键盘输入字符,依次显示在行的最左端(即每接受一个字符,显示在屏幕上并回车换行。)2.对频繁使用的回车换行编写为子程序,在主程序中调用完成分行显示。★供实习题目题目一、偶校验程序实习1.实习目的与要求(1)学习子程序的编写和调用方法。(2)掌握对ASCⅡ码进行校验的编程方法。(3)偶校验位的填入要作为子程序来设计。2.实习内容对缓冲区中的一组字符的ASCⅡ码加偶校验。3.提示每个字符的ASCⅡ码为7位,占一个字节,其最高位为校验位。偶校验的含义为:校验位与7位字符位中的1的个数之和为偶数,这可用于字符正确与否的校验。例如:字符为1011011,其中1的个数为5,那么校验位我们填入1,这样,1的个数为6,即为偶数。偶校验位的填入作为子程序来设计。题目二、计算N!程序实习1.实习目的与要求(1)学习递归子程序的设计方法。(2)通过编写阶乘计算程序,了解数学函数在汇编一级语言上的实现。2.实习内容编程计算N!(8=N=0)的值。CODESEGMENTMAINPROCFARASSUMECS:CODESTART:MOVCX,10;设置循环次数NEXT:MOVAH,01H;从键盘输入一个字符INT21HCALLCRLF;调用回车换行子程序LOOPNEXTMOVAH,4CH;返回DOSINT21HMAINENDPCRLFPROCNEAR;回车换行子程序MOVAH,02H;回车MOVDL,0DHINT21HMOVDL,0AH;换行INT21HRETCRLFENDPCODEENDSENDSTART实验6串操作程序实验一、实习目的掌握串操作程序设计的基本方针。二、实习内容将首地址DATA1按字节存储的数据块通过使用字符串操作将其移动到首地址为DATA2的数据块中。三、提示与说明数据传递中注意:如果两个数据地址不重叠则可以按地址增量方式传送,也可以按地址减量方式传送。若重叠就须分析源程序首地址与目的块首地址关系,若源块首址低于目的首址,则只能按地址减量方式传送。反之,按地址增量方式传送。注意:REPNE,REP指令用法;区别SCASB用法。★供实习题目题目一、字符串搜索程序1.实习要求掌握串操作程序设计方法和学习查找算法。2.实习提示在一个数据块中,找出其中一个特定的值及位置。如果没有,也做出相应标识。实验7码制转换程序实验常用码制转换有:BCD码转二进制、二进制转BCD码、ASCⅡ码转BCD码、BCD码转ASCⅡ码、二进制转ASCⅡ码、ASCⅡ码转二进制码。一、实习题目ASCⅡ码转二进制码程序实验二、实习目的掌握码制转换的基本原理及相应的转换程序的编写方法。三、实习内容将ASCⅡ码数据转换成二进制数据。要求从键盘上输入十进制整数(假定范围0~32767),然后转换成二进制格式存储。DATASEGMENTSTRING1DB'PLEASEINPUTANUMBER(0~32767):$'STRING2DB'THEASCIIIS:$'STRING3DB'THEBINARYIS:$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETSTRING1MOVAH,09HINT21HCALLCRLFINPUT:MOVAH,01H;输入数据INT21HCMPAL,0DHJZNEXTSUBAL,30HJLINPUTCMPAL,39HJGINPUTCBWXCHGAX,BX;AX为输入值,BX保存结果,两个对调为MUL做准备MOVDX,10D;将上一次结果乘10MULDXXCHGAX,BX;AX为本次输入的值,BX为之前的结果ADDBX,AXJMPINPUTNEXT:CALLCRLFMOVCL,4DMOVCH,4DMOVDX,OFFSETSTRING2MOVAH,09HINT21HCALLCRLFLOOP0:ROLBX,CL;循环左移,将最高为存到BL的低四位MOVAL,BLANDAL,0FH;ADDAL,30HCMPAL,3AHJLOUTPUTADDAL,07HOUTPUT:MOVAH,02HMOVDL,ALINT21HDECCHJNZLOOP0CALLCRLFMOVDX,OFFSETSTRING3MOVAH,09HINT21HCALLCRLFMOVCH,16DMOV