实验一、数据块传送将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。源程序:DATASSEGMENT;此处输入数据段代码ORG2000HDATA1DB1,2,3,4,5,6,7,8,9,10ORG3000HDATA2DB10DUP(0)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVSI,2000HMOVDI,3000HMOVCX,10NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART运行结果:将数据段中2000H单元开始存放的10个数(16位数)传送到3000H开始的10个字中。源程序:DATASSEGMENT;此处输入数据段代码ORG2000HDATA1DW1,2,3,4,5,6,7,8,9,10ORG3000HDATA2DW10DUP(0)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVSI,2000HMOVDI,3000HMOVCX,10NEXT:MOVAX,[SI]MOV[DI],AXADDSI,2ADDDI,2DECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART运行后:将数据DATA1中的10个字节数据传送到数据段DATA2中源数据:DATASSEGMENT;此处输入数据段代码DATA1DB1,2,3,4,5,6,7,8,9,10ORG1000HDATA2DB10DUP(0)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,DATA1LEADI,DATA2MOVCX,10NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART初始值:运行后:将数据段中2000H开始的20个数据传送到2010H开始的20个单元中。源程序:DATASSEGMENT;此处输入数据段代码ORG2000HDATA1DB5DUP(1,2,3,4,5,6)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVSI,2000HMOVDI,2100HMOVCX,20NEXT1:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXT1MOVSI,2100HMOVDI,2010HMOVCX,20NEXT2:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXT2MOVAH,4CHINT21HCODESENDSENDSTART运行结果:实验二查
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
实验目的:熟悉实验环境;熟练掌握查表程序已知0~15的平方值表,查表求X的平方值,送到Y单元,用两种方法DATASSEGMENT;此处输入数据段代码TABLEDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,255XDB3YDB0DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,TABLEMOVAL,XMOVAH,0ADDBX,AXMOVAL,[BX]MOVY,ALMOVAH,4CHINT21HCODESENDSENDSTART运行结果:方法二:源程序:DATASSEGMENT;此处输入数据段代码TABLEDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,255XDB3YDB0DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,TABLEMOVAL,XXLATMOVY,ALMOVAH,4CHINT21HCODESENDSENDSTART运行结果2已知0~255的平方值表,查表求X的平方值,送到Y单元源程序DATASSEGMENT;此处输入数据段代码TABLEDW0,1,4,9,16,25,250DUP(0)XDW3YDW?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,TABLEMOVAX,XADDAX,AXADDBX,AXMOVAX,[BX]MOVY,AXMOVAH,4CHINT21HCODESENDSENDSTART运行结果实验三、计算计算1234F000H+98765000H的和源程序:DATASSEGMENT;此处输入数据段代码DATA1DD1234F000HDATA2DD98765000HDATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,DATA1LEADI,DATA2MOVAX,[SI]ADDAX,[DI]MOV[SI],AXMOVAX,[SI+2]ADCAX,[DI+2]MOV[SI+2],AXMOVAH,4CHINT21HCODESENDSENDSTART运行结果计算8字节数据1122334455667788H与99AABBCCDDEEFF00H的和源程序:DATASSEGMENT;此处输入数据段代码DATA1DQ1122334455667788HDATA2DQ99AABBCCDDEEFF00HDATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,DATA1LEADI,DATA2MOVCX,4CLCNEXT:MOVAX,[SI]ADCAX,[DI]MOV[SI],AXADDSI,2ADDDI,2DECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART运行结果计算8字节的BCD码十进制数1122334455667788H与9988776655443322H的和源程序:DATASSEGMENT;此处输入数据段代码DATA1DB88H,77H,66H,55H,44H,33H,22H,11HDATA2DB22H,33H,44H,55H,66H,77H,88H,99HDATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,DATA1LEADI,DATA2CLCMOVCX,8NEXT:MOVAL,[SI]ADCAL,[DI]DAAMOV[SI],ALINCSIINCDIDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART运行结果计算10个字节数据的和(数据自己定义)源程序:DATASSEGMENT;此处输入数据段代码DATA1DB1,2,3,4,5,6,7,8,9,10SUMDB0DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,DATA1LEADI,SUMMOVCX,10CLCNEXT:MOVAL,[SI]ADCSUM,ALADDSI,1DECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART运行结果计算10个字数据的和(数据自己定义)源程序:DATASSEGMENT;此处输入数据段代码DATA1DW1,2,3,4,5,6,7,8,9,10SUMDW0DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,DATA1LEADI,SUMMOVCX,10CLCNEXT:MOVAX,[SI]ADCSUM,AXADDSI,2DECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART运行结果实验四、计算表达式的值计算表达式的值,已知X=10,Y=5。DATASSEGMENT;此处输入数据段代码XDB10YDB5ZDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVAL,XSUBAL,YMOVBL,7MULBLCBWMOVBL,YADDBL,2IDIVBLMOVZ,ALMOVAH,4CHINT21HCODESENDSENDSTART实验五、找最大、最小数找出2040H单元和2041H单元的大数,送2042H单元(数据自己定义)DATASSEGMENT;此处输入数据段代码ORG2040HDATA1DB11DATA2DB12DATA3DB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVAL,DATA1CMPAL,DATA2JGGREATMOVAL,DATA2GREAT:MOVDATA3,ALMOVAH,4CHINT21HCODESENDSENDSTART找出10个数(8位数)里的最大数(数据自己定义)DATASSEGMENT;此处输入数据段代码DATADB1,2,3,6,5,4,10,9,8,7MAXDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVCX,9MOVAL,[BX]NEXT:INCBXCMPAL,[BX]JGGREATMOVAL,[BX]GREAT:MOVMAX,ALDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART找出10个数(8位数)里的最小数(数据自己定义)DATASSEGMENT;此处输入数据段代码DATADB3,2,1,6,5,4,10,9,8,7MINDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVCX,9MOVAL,[BX]NEXT:INCBXCMPAL,[BX]JLLESSMOVAL,[BX]LESS:MOVMIN,ALDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART找出10个数(16位数)里的最大数(数据自己定义)DATASSEGMENT;此处输入数据段代码DATADW3,2,1,6,5,4,10,9,8,7MAXDW?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVCX,9MOVAX,[BX]NEXT:ADDBX,2CMPAX,[BX]JGGREATMOVAX,[BX]GREAT:MOVMAX,AXDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART找出10个数(16位数)里的最小数(数据自己定义)DATASSEGMENT;此处输入数据段代码DATADW3,2,1,6,5,4,10,9,8,7MINDW?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVCX,9MOVAX,[BX]NEXT:ADDBX,2CMPAX,[BX]JLLESSMOVAX,[BX]LESS:MOVMIN,AXDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART实验六、统计正数、负数个数找出10个数(8位数)里的正数个数(数据自己定义)源程序:DATASSEGMENT;此处输入数据段代码TABLEDB-1,-2,-3,-4,-5,1,2,3,4,5NUMDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,TABLEMOVNUM,0MOVCX,10NEXT2:MOVAL,[SI]TESTAL,80HJNZNEXT1INCNUMNEXT1:INCSIDECCXJNZNEXT2MOVAH,4CHINT21HCODESENDSENDSTART运行结果:找出10个数(8位数)里的负数个数(数据自己定义)源程序:DATASSEGMENT;此处输入数据段代码TABLEDB-1,-2,-3,-4,-5,1,2,3,4,5NUMDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,TABLEMOVNUM,0MOVCX,10NEXT2:MOVAL,[SI]TESTAL,80HJZNEXT1INCNUMNEXT1:INCSIDECCXJNZNEXT2MOVAH,4CHINT21HCODESENDSENDSTART运行结果:找出10个数(16位数)里的正数个数(数据自己定义)源程序:DATASSEGMENT;此处输入数据段代码TABLEDW-1,-2,-3,-4,-5,1,2,3,4,5NUMDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,TABLEMOVNUM,0MOVCX,10NEXT2:MOVAX,[SI]TESTAX,8000HJNZNEXT1INCNUMNEXT1:ADDSI,2DECCXJNZNEXT2MOVAH,4CHINT21HCODESENDSENDSTART运行结果:找出10个数(16位数)里的负数个数(数据自己定义)源程序:DATASSEGMENT;此处输入数据段代码TABLEDW-1,-2,-3,-4,-5,1,2,3,4,5NUMDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,TABLEMOVNUM,0MOVCX,10NEXT2:MOVAX,[SI]TESTAX,8000HJZNEXT1INCNUMNEXT1:ADDSI,2DECCXJNZNEXT2MOVAH,4CHINT21HCODESENDSENDSTART运行结果:实验七、数据块比较比较数据段DS与数据段ES中的10个字节的数据是否一致?源程序:DATASSEGMENT;此处输入数据段代码TABLE1DB1,2,3,4,5,6,7,8,9,10NDB?DATASENDSDATABSEGMENTTABLE2DB1,2,3,4,5,6,8,7,9,10DATABENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVBX,DATABMOVES,BX;此处输入代码段代码LEASI,TABLE1LEADI,TABLE2CLDMOVCX,10MOVN,0NEXT2:CMPSBJNZNEXT1DECCXJNZNEXT2JMPEXITNEXT1:INCNEXIT:MOVAH,4CHINT21HCODESENDSENDSTART运行结果:(相同N=0,不同N=1)比较数据段DS与数据段ES中的10个字的数据是否一致?源程序:DATASSEGMENT;此处输入数据段代码TABLE1DW1,2,3,4,5,6,7,8,9,10NDB?DATASENDSDATABSEGMENTTABLE2DW1,2,3,4,5,6,8,7,9,10DATABENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVBX,DATABMOVES,BX;此处输入代码段代码LEASI,TABLE1LEADI,TABLE2MOVCX,10MOVN,0CLDNEXT2:CMPSWJNZNEXT1DECCXJNZNEXT2JMPEXITNEXT1:INCNEXIT:MOVAH,4CHINT21HCODESENDSENDSTART运行结果:(相同N=0,不同N=1)实验八、逻辑运算与移位将数据段中4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H的高位清零,一般用于把数据送显示缓冲区时使用。源程序:DATASSEGMENT;此处输入数据段代码ORG4000HDATA1DB9AHDATA2DB?DATA3DB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVAL,DATA1ANDAL,0F0HMOVCL,4SHRAL,CLMOVDATA2,ALMOVAL,DATA1ANDAL,0FHMOVDATA3,ALMOVAH,4CHINT21HCODESENDSENDSTART运行结果:将4000H、4001H单元的低位送4002H单元的高、低位,一般用于将缓冲区的数据取出拼成一个字节。源程序:DATASSEGMENT;此处输入数据段代码ORG4000HDATA1DB9AHDATA2DB7BHDATA3DB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVAL,DATA1ANDAL,0FHMOVCL,4SHLAL,CLMOVDATA3,ALMOVAL,DATA2ANDAL,0FHADDDATA3,ALMOVAH,4CHINT21HCODESENDSENDSTART运行结果:实验九、输入输出在显示器上输出字符串‘HELLO!’DATASSEGMENT;此处输入数据段代码STRINGDB"HELLO!$"DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEADX,STRINGMOVAH,9INT21HMOVAH,4CHINT21HCODESENDSENDSTART.从键盘输入一组字符串,存入到BUFFER数据区(自己定义)中。DATASSEGMENT;此处输入数据段代码BUFFERDB100,0,100DUP(?)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEADX,BUFFERMOVAH,10INT21HMOVCL,BUFFER+1XORCH,CHADDDX,CXMOVBX,DXMOVBYTEPTR[BX+2],'$'MOVAH,4CHINT21HCODESENDSENDSTART.将内存单元存放的BCD码25H在显示器上输出(即输出字符’25’)。DATASSEGMENT;此处输入数据段代码DATADB25HDATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVAL,[BX]ANDAL,0F0HMOVCL,4SHRAL,CLADDAL,30HMOVDL,ALMOVAH,2INT21HMOVAL,[BX]ANDAL,0FHADDAL,30HMOVDL,ALMOVAH,2INT21HMOVAH,4CHINT21HCODESENDSENDSTART将内存单元存放的十进制数25从显示器上输出((即输出字符’25’)。DATASSEGMENT;此处输入数据段代码DATADB25DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVAL,[BX]CBWMOVCL,10DIVCLADDAL,30HADDAH,30HMOVBL,AHMOVDL,ALMOVAH,2INT21HMOVDL,BLMOVAH,2INT21HMOVAH,4CHINT21HCODESENDSENDSTART从键盘输入10个个位数字(0~9之间的任意数字),并存储到数据区INPUT中。DATASSEGMENT;此处输入数据段代码BUFFERDB20,0,20DUP(?)INPUTDB10DUP(0)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,BUFFERLEADI,INPUTMOVAH,10INT21HMOVCL,BUFFER+1NEXT:MOVAL,[SI+2]SUBAL,30HMOV[DI],ALINCSIINCDIDECCLJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART将数据段中的10个个位数数据从显示器上输出。DATASSEGMENT;此处输入数据段代码DATADB1,2,3,4,5,6,7,8,9,0DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATAMOVCX,10NEXT:MOVAL,[BX]ADDAL,30HMOVDL,ALMOVAH,2INT21HINCBXDECCXJNZNEXTMOVAH,2INT21HMOVAH,4CHINT21HCODESENDSENDSTART输入任意个字符存到BUFFER数据区(自己定义),输入时以回车作为结束标志。DATASSEGMENT;此处输入数据段代码BUFFERDB100,0,100DUP(?)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,BUFFERMOVAH,10INT21HMOVAH,4CHINT21HCODESENDSENDSTART实验十、子程序编写8位数求和子程序,并调用它完成10个数的求和程序。DATASSEGMENT;此处输入数据段代码ARYDB1,2,3,4,5,6,7,8,9,10COUNTEQU$-ARYSUMDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码DB100DUP(?)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVAX,STACKSMOVSS,AX;此处输入代码段代码CALLPROADDMOVAH,4CHINT21HPROADDPROCNEARPUSHAXPUSHCXPUSHSILEASI,ARYMOVCX,COUNTXORAL,ALCLCNEXT:ADCAL,[SI]INCSIDECCXJNZNEXTXORSUM,ALPOPSIPOPCXPOPAXRETPROADDENDPCODESENDSENDSTART