实验三子程序设计实验一、实验目的1.学习子程序的定义和调用方法。2.掌握子程序的程序设计、编制及调用。二、实验设备TDN86/88教学实验系统一台三、实验内容及步骤1.求无符号字节序列中的最大值和最小值设有一字节序列,其存储首址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下:结束主程序开始数据区首址→SI序列的字节个数→CX调用求最大最小值子程序STACK1SEGMENTSTACKDW64DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART:MOVSI,3000HMOVCX,0008HCALLbranchA1:JMPA1branch:JCXZA4PUSHSIPUSHCXPUSHBX子程序CX=0?SI、CX、BX入栈[SI]→BHBH→BLSI+1→SI[SI]→ALAL→BHAL→BLAL﹤BHAL﹥BLCX-1→CXRETCX=0?SI、CX、BX出栈YNNNNYYY实验步骤(1)输入源程序,进行编译、链接和加载。(2)在调试区键入E0000:3000↙,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。(3)运行程序,查看结果,在调试区键入RAX↙,显示结果应为AX=F904,AH中为最大值,AL中为最小值。2.数组求和设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工MOVBH,[SI]MOVBL,BHA1:LODSBCMPAL,BHJBEA2MOVBH,ALJMPA3A2:CMPAL,BLJAEA3MOVBL,ALA3:LOOPA1MOVAX,BXPOPBXPOPCXPOPSIA4:RETCODEENDSENDSTART作由子程序来实现。程序:STACK1SEGMENTSTACKDW64DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART:MOVSI,3000HMOVCX,0008HXORAX,AXCALLbranchA5:JMPA5branch:JCXZA4PUSHSIPUSHCXA1:ADDAL,[SI]INCSIA3:LOOPA1POPCXPOPSIA4:RETCODEENDSENDSTART8个01,总和为08