微机原理与接口技术实验报告实验一专业:班级:学号:姓名:预习报告成绩实验成绩:实验日期及时间:机位号:1.1将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码ORG2000HDAT1DB01H,03H,05H,06H,08H,02H,04H,07H,0BH,02HORG3000HDTA2DB10DUP(0)DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVSI,2000HMOVDI,3000HMOVCX,10NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:1419:20000103050608020407-0B020000000000001419:30000000000000000000-00000000000000004.运算后内存分布:5.连续运行G=000000176.查看结果使用命令:-D1419:30007.记录结果:1419:30000103050608020407-0B020000000000008.存在问题及体会1.2将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。1.流程图:2.源程序(要求有完整的数据段、代码段):DATA1SEGMENT;此处输入数据段代码D1DW1,4,5,4,6,4,7,8,4,9DATA1ENDSDATA2SEGMENTD2DW10DUP(0)DATA2ENDSCODESSEGMENTASSUMECS:CODES,DS:DATA1,ES:DATA2START:MOVAX,DATA1MOVDS,AXMOVAX,DATA2MOVES,AX;此处输入代码段代码LEASI,D1LEADI,D2MOVCX,10NEXT:MOVAX,[SI]MOVES:[DI],AXINCSIINCSIINCDIINCDIDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:1419:00000100040005000400-06000400070008001419:00100400090000000000-0000000000000000141B:00000000000000000000-0000000000000000141B:00100000000000000000-00000000000000004.运算后内存分布:1419:00000100040005000400-06000400070008001419:00100400090000000000-0000000000000000141B:00000100040005000400-0600040007000800141B:00100400090000000000-00000000000000005.连续运行G=000000216.查看结果使用命令:-D141B:00007.记录结果:D1中的数据为1,4,5,4,6,4,7,8,4,9,D2中的数据为空,经传送后D2为1,4,5,4,6,4,7,8,4,98.存在问题及体会2.1已知0~15的平方值表,查表求X(X是0到15间任一数)的平方值,送到Y单元,用两种方法。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码TABLEDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225XDB10YDB?DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,TABLEMOVAL,XMOVAH,0ADDBX,AXMOVAL,[BX]MOVY,ALMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:4.运算后内存分布:5.连续运行G=000000156.查看结果使用命令:-D0770:00007.记录结果:8.存在问题及体会2.2已知0~255的平方值表,查表求X的平方值,送到Y单元。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码XDW10YDW?ZDW0TABLEDW256DUP(0)DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,TABLEMOVCX,256NEXT:MOVAX,ZMOVBX,ZMULBXMOV[SI],AXINCZINCSIINCSIDECCXJNZNEXTLEABX,TABLEMOVAX,XADDBX,AXADDBX,AXMOVAX,[BX]MOVY,AXMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:4.运算后内存分布:5.连续运行G=000000306.查看结果使用命令:-D0770:00007.记录结果:经过计算得到0~255的平方,查表的得到x为10时其平方数为64H,即1008.存在问题及体会3.1计算多字节数据1122334455667788H与99AABBCCDDEEFF00H的和。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码D1DW7788H,5566H,3344H,1122HD2DW0FF00H,0DDEEH,0BBCCH,99AAHSUMDW4DUP(0)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,D1LEADI,D2LEABX,SUMMOVCX,4CLCNEXT:MOVAX,[SI]ADCAX,[DI]MOV[BX],AXINCSIINCSIINCDIINCDIINCBXINCBXDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:4.运算后内存分布:5.连续运行G=000000246.查看结果使用命令:-D140E:00007.记录结果:数据1为:1122334455667788H数据2为:99AABBCCDDEEFFH数据和sum为:AACCEF1133557688H8.存在问题及体会3.2计算8字节的BCD码十进制数1122334455667788H与9988776655443322H的和。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENTD1DB88H,77H,66H,55H,44H,33H,22H,11H,00HD2DB22H,33H,44H,55H,66H,77H,88H,99H,00HSUMDB9DUP(0)DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXLEASI,D1LEADI,D2LEABX,SUMMOVCX,9CLCNEXT:MOVAL,[SI]ADCAL,[DI]DAAMOV[BX],ALINCSIINCDIINCBXDECCXJNZNEXTMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:4.运算后内存分布:5.连续运行G=000000226.查看结果使用命令:-D140E:00007.记录结果:数据1为:1122334455667788H数据2为:9988776655443322H数据和为:101111111111111101H8.存在问题及体会3.3计算10个字数据的和(数据自己定义)。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码XDW12H,12H,23H,15H,55H,77H,66H,11H,17H,54HYDW2DUP(0)DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEASI,XMOVCX,10MOVBX,0NEXT:MOVAX,[SI]ADDBX,AXJNCPPPINCDXPPP:INCSIINCSIDECCXJNZNEXTLEADI,YMOV[DI],BXMOV[DI+2],DX3.运算前内存分布:4.运算后内存分布:5.连续运行G=000000246.查看结果使用命令:-D140E:00007.记录结果:数据为:12H,12H,23H,15H,55H,77H,66H,11H,17H,54H结果为:020AH8.存在问题及体会4.1计算表达式)2/()7*)((YYXZ的值,已知X=10,Y=5。1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码XDB10YDB5ZDB0DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码MOVAL,XSUBAL,YMOVBL,7MULBLMOVDL,YADDDL,2DIVDLMOVZ,ALMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:4.运算后内存分布:5.连续运行G=0000001C6.查看结果使用命令:-D140E:00007.记录结果:数据为10和5,经过运算后得到结果为58.存在问题及体会5.1找出2040H单元和2041H单元的大数,并送2042H单元(数据自己定义)1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码ORG2040HXDB10,5,0DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,XMOVAL,[BX]CMPAL,[BX+1]JAPPPMOVAL,[BX+1]PPP:MOV[BX+2],ALMOVAH,4CHINT21HCODESENDSENDSTART3.运算前内存分布:4.运算后内存分布:5.连续运行G=000000166.查看结果使用命令:-D0770:20407.记录结果:内存2040H单元存储数字10,2041H单元存储数字5,通过比较得到最大数10后,存放到2042H单元8.存在问题及体会5.2找出10个数(8位数)里的最大数(数据自己定义)1.流程图:2.源程序(要求有完整的数据段、代码段):DATASSEGMENT;此处输入数据段代码DATDB10,5,6,2,5,3,8,-1,-7,0YDB?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AX;此处输入代码段代码LEABX,DATMOVCX,9MOVAL,[BX]INCBXNEXT:CMPAL,[BX]JGPPPMOVAL,[BX]PPP:INCBXDECCXJNZNEXTMOVY,ALMOVAH,4CHINT21HCODESENDSENDS