star-es8086使用说明

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验内容:微机原理第三次上机实验班级:通信1702姓名:余昕海学号:09051702142STARES80864软件实验软件实验部分共有七个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序、C程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。实验一数据传送一、实验目的熟悉星研集成环境软件的使用方法。熟悉Borland公司的TASM编译器熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。二、实验内容1、熟悉星研集成环境软件。2、编写程序,实现数据段的传送、校验。三、程序框图3调用数据传送子程序串比较,CMPSB相等?NY操作成功结束操作失败数据块传送比较程序框图开始循环次数--CX,源首地址--SI,目的首地址--DICLD:执行字符串指令后,SI+1,DI+1比较SI和DISI=DI?SIDI?设定SI为源数据块末地址(SI=SI+CX-1)设定DI为目的数块末地址(DI=DI+CX-1)数据串传送操作(MOVSB)结束YNYN数据传送子程序STD:执行字符串指令后,SI-1,DI-1CLD:执行字符串指令后,SI+1,DI+1开始循环次数--CX,源首地址--SI,目的首地址--DI四、实验步骤在DS段内3000H~30FFH中输入数据;使用单步、断点方式调试程序,检测DS段内6000H~60FFH中的内容。熟悉查看特殊功能寄存器、CS段、DS段的各种方法。五、程序清单_STACKSEGMENTSTACKDW100DUP(?)_STACKENDS_DATASEGMENTWORDPUBLIC'DATA'_DATAENDSCODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACKMOVAX,_DATAMOVDS,AXMOVES,AXNOPMOVCX,100HMOVSI,3000HMOVDI,6000HCALLMoveMOVCX,100HMOVSI,3000H4MOVDI,6000HCLDREPECMPSBJNEERRORTRUE:JMP$ERROR:JMP$MovePROCNEARCLDCMPSI,DIJZReturnJNBMove1ADDSI,CXDECSIADDDI,CXDECDISTDMove1:REPMOVSBReturn:RETMoveENDPSTARTENDPCODEENDSENDSTART实验运行情况:实验二双字节BCD码(十进制数)加法一、实验目的熟悉8086汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。二、实验内容从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。三、实验框图5开始设定先清LED再接收键输入标志通过键盘获得4位被加数(压缩BCD码)设定接收到第一个键后才清除LED标志通过键盘获得4位加数(压缩BCD码)压缩BCD码转换为非压缩BCD码高位消隐显示结果被加数与加数低位字节不带进位加法被加数与加数的高位字节带进位加法双字节BCD码加法程序框图十进制调整十进制调整四、实验步骤1、连线说明:E5区:CLK——B2区:2ME5区:CS——A3区:CS5E5区:A0——A3区:A0E5区:A、B、C、D——G5区:A、B、C、D2、在G5区的键盘上输入4位被加数、加数3、结果显示在G5区的数码管上五、程序清单EXTRNDisplay8:NEAR,GetBCDKey:NEAREXTRNF1:BYTE_STACKSEGMENTSTACKDW100DUP(?)_STACKENDS_DATASEGMENTWORDPUBLIC'DATA'BUFFERDB8DUP(?)augendDB2DUP(?);被加数addendDB2DUP(?);加数_DATAENDSCODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACKMOVAX,_DATAMOVDS,AXMOVES,AX6NOPMOVF1,0;先清除显示,再接收键输入START1:LEADI,augendMOVCX,4;按键次数CALLGetBCDKey;得到双字节十进制数(被加数)MOVF1,1;接收到第一个键,才清除显示LEADI,addendMOVCX,4;按键次数CALLGetBCDKey;得到双字节十进制数(加数)MOVAL,augendADDAL,addend;低位DAAXCHGAL,AHMOVAL,augend+1ADCAL,addend+1;高位DAAXCHGAL,AHMOVBL,0ADCBL,0;进位CLDLEADI,BUFFER;存放显示结果CALLB1toB2;低位MOVAL,AHCALLB1toB2;高位MOVAL,BLSTOSBMOVAL,10H;最高三位消隐STOSBSTOSBSTOSBLEASI,BUFFER+4MOVCX,4CALLBlackDisplay;将高位0消隐LEASI,BUFFERCALLDisplay8JMPSTART1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2PROCNEARPUSHAXANDAL,0FHSTOSBPOPAXANDAL,0F0HRORAL,47STOSBRETB1toB2ENDPBlackDisplayPROCNEARSTDMOVDI,SIBlackDisplay1:LODSB;将高位0消隐CMPAL,0JNZExitMOVAL,10HSTOSBLOOPBlackDisplay1Exit:CLDRETBlackDisplayENDPSTARTENDPCODEENDSENDSTART实验三双字节BCD码(十进制数)减法一、实验目的熟悉8086汇编指令,学会使用星研集成环境软件,掌握汇编语言的设计和调试方法。能看懂程序流程框图,能自己设计程序,熟悉BCD码、补码,了解如何调用系统提供的子程序。二、实验内容从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。三、程序框图8开始设定先清LED再接收键输入标志通过键盘获得双字节十进制被减数(压缩BCD码)设定接收到第一个键后才清除LED标志通过键盘获得双字节十进制减数(压缩BCD码)压缩码转换为非压缩码显示结果被减数与减数低位字节不带进位相减双字节十进制减法程序框图被减数与减数高位字节带进位相减十进制调整十进制调整被减数=减数?被减数与减数交换,11H--符号位(负数)10H--符号位YN高位0消隐,若结果为负,前面加上-四、实验步骤1、连线说明:E5区:CLK——B2区:2ME5区:CS——A3区:CS5E5区:A0——A3区:A0E5区:A、B、C、D——G5区:A、B、C、D2、在G5区的键盘上输入4位被减数、减数3、结果显示在G5区的数码管上五、程序清单EXTRNDisplay8:NEAR,GetBCDKey:NEAREXTRNF1:BYTE_STACKSEGMENTSTACKDW100DUP(?)_STACKENDS_DATASEGMENTWORDPUBLIC'DATA'BUFFERDB8DUP(?)minuendDW1DUP(?);被减数subtrahendDW1DUP(?);减数_DATAENDSCODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACK9MOVAX,_DATAMOVDS,AXMOVES,AXNOPMOVF1,0;先清除显示,再接收键输入START1:LEADI,minuendMOVCX,4;按键次数CALLGetBCDKey;得到双字节十进制数(被减数)MOVF1,1;接收到第一个键,才清除显示LEADI,subtrahendMOVCX,4;按键次数CALLGetBCDKey;得到双字节十进制数(减数)MOVAX,minuendMOVBX,subtrahendMOVDL,10HCMPAX,BXJNBSTART2XCHGAX,BXMOVDL,11H;负数START2:SUBAL,BL;低位DASXCHGAL,AHSBBAL,BH;高位DASXCHGAL,AHCLDLEADI,BUFFER;存放显示结果CALLB1toB2;低位MOVAL,AHCALLB1toB2;高位MOVAL,10H;最高三位消隐STOSBSTOSBSTOSBSTOSBLEASI,BUFFER+3MOVCX,3CALLBlackDisplay;将高位0消隐LEASI,BUFFERCALLDisplay8JMPSTART1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2PROCNEARPUSHAX10ANDAL,0FHSTOSBPOPAXANDAL,0F0HRORAL,4STOSBRETB1toB2ENDPBlackDisplayPROCNEAR;将高位0消隐BlackDisplay1:MOVAL,[SI]CMPAL,0JNZExitMOVAL,10HMOV[SI],ALDECSILOOPBlackDisplay1Exit:CLDMOV[SI+1],DLRETBlackDisplayENDPSTARTENDPCODEENDSENDSTART六、思考题带符号的十进制数加法程序如何编写?实验四四字节十六进制数转十进制数一、实验目的进一步熟悉8086汇编指令,了解十六进制数转十进制数的方法。二、实验内容从键盘上输入8位十六进制数,实现四字节十六进制数转8位十进制数,并在数码管上显示。注意输入数据必须在00000000H~05F00000H范围,否则,结果超出8位十进制数,无法正确显示。三、程序框图11开始设定先清LED再接收键输入标志通过键盘获得四字节十六进制数设定接收到第一个键后才清除LED标志调用四字节十六进制转十进制子程序显示结果主程序开始0--BX,AX(存放结果用)32--CX(循环次数)DI,SI(32位)循环右移一位--CYBH,BL,AH,ALx2+进位CY,同时进行十进制调整CX=CX-1CX=0?四字节十六转十进制子程序结束YN4字节16进制数--DI,SI四、实验步骤1、连线说明:E5区:CLK——B2区:2ME5区:CS——A3区:CS5E5区:A0——A3区:A0E5区:A、B、C、D——G5区:A、B、C、D2、在G5区的键盘上输入8位十六进制数3、结果显示在G5区的数码管上五、程序清单EXTRNDisplay8:NEAR,GetKey:NEAREXTRNF1:BYTE_STACKSEGMENTSTACKDW100DUP(?)_STACKENDS_DATASEGMENTWORDPUBLIC'DATA'BUFFERDB8DUP(?)_DATAENDSCODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACKSTART:MOVAX,_DATAMOVDS,AXMOVES,AXNOP12MOVF1,0;先清除显示,再接收键输入START1:LEADI,BUFFERMOVCX,8;按键次数CALLGetKey;得到4字节十六进制数MOVF1,1;接收到第一个键,才清除显示MOVSI,WORDPTRBUFFERMOVDI,WORDPTRBUFFER+2CALLB4toD4;转换成十进制数LEADI,BUFFER;存放显示结果CALLB1toB2;低位MOVAL,AHCALLB1toB2MOVAL,BLCALLB1toB2MOVAL,BHCALLB1toB2LEASI

1 / 122
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功