资源描述:
《微机原理上机实验问题详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准实验01A将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器程序如下:CODESEGMENTASSUMECS:CODESTARTPROCFARSTT:PUSHDSSUBAX,AXPUSHAX;==============================MOVAX,0FFFFHMOVBX,AXMOVCX,AXMOVDX,AXMOVSI,AXMOVDI,AXMOVBP,AX;==============================RETSTARTENDPCODEENDSENDSTT 实验01B将FFH送到内存1000H,1001H,1002H,1003H,10
2、04H单元中程序如下:DATASEGMENTORG1000HH1DB5DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCFARSTT:PUSHDSSUBAX,AXPUSHAX;==============================MOVAL,0FFHMOVDI,1000HMOVCX,5;循环5次LP1:MOV[DI],AL;FF放入1000H-1004H中INCDI文档大全实用标准DECCXJNZLP1;==============================RETSTARTENDPCODEENDSENDSTT
3、 实验02A编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=?程序如下:DATASEGMENTORG1000HH1DB10DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCFARSTT:PUSHDSSUBAX,AXPUSHAXMovax,dsegMovds,ax;=========================
4、=====MOVSI,1000H;不带最高位进位的全加器MOVDI,1003HMOVBX,1006HMOVCX,3CLCAA:MOVAL,[SI]ADCAL,[DI]MOV[BX],ALPUSHF;保护FR,这里其实没有必要,因为INC不会产生进位INCSIINCDIINCBXPOPFLOOPAA文档大全实用标准 MOVDL,0;最高位进位ADCDL,0MOVDI,1009HMOV[DI],DL;==============================RETSTARTENDPCODEENDSENDSTT 实验02B用串传送指令把A程序的数据块(被加数、加数、和)偏移地址100
5、0H开始的区域传递到同一数据段的偏移地址为1010H开始的区域,并利用DEBUG查看运行结果程序如下:DATASEGMENTORG1000HH1DB20DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCFARSTT:PUSHDSSUBAX,AXPUSHAX;==============================MOVAX,DS;使ES段地址与DS相同MOVES,AX MOVSI,1000H;不带最高位进位的全加器MOVDI,1003HMOVBX,1006HMOVCX,3CLCAA:MOVAL,[SI]ADCAL,[D
6、I]MOV[BX],ALPUSHF;保护FR,这里其实没有必要,因为INC不会产生进位INCSIINCDI文档大全实用标准INCBXPOPFLOOPAA MOVDL,0;最高位进位ADCDL,0MOVDI,1009HMOV[DI],DL MOVSI,1000H;串传送MOVDI,1010HMOVCX,5CLDREPMOVSW;一次传送一个字;==============================RETSTARTENDPCODEENDSENDSTT 实验02C,选作编写一个两位十进制数加法程序,当从键盘上输入:n1n2+n3n4则在CRT上显示n1n2+n3n4=n5n6程序
7、如下:DATASEGMENTH1DB"Theaddendsallmustbetwofigures,insufficientadds0infront.",13,10,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCFARSTT:PUSHDSSUBAX,AXPUSHAX;==============================MOVAX,DATAMOVDS,AX LEADX,H1;打印注释:加数和被加数都必须为两