实验七八九Word格式.docx
《实验七八九Word格式.docx》由会员分享,可在线阅读,更多相关《实验七八九Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
BRTABLEDWOFFSETBRA,OFFSETBRB,OFFSETBRC
DWOFFSETBRD,OFFSETBRE,OFFSETBRF
MSGADB'
ILIKEMYIBM-PC!
$'
MSGBDB'
HOWAREYOU!
MSGCDB'
PROGRAMDESIGN$'
MSGDDB'
THISISASAMPLE$'
MSGEDB'
WELLCOMEUSEMYCOPUTER!
MSGFDB'
THEASSEMBLERLANGUAGEOF8086$'
ERRMSDB'
ERROR!
!
INVALIDPARAMETER!
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVES,AX
MOVSI,80H
LEADI,PARM
MOVCX,16
CLD
REPMOVSB
MOVDS,AX
CMPPARM,2
JCERR
MOVAL,PARM+2
SUBAL,30H
CMPAL,6
JNCERR
LEABX,BRTABLE
CBW
ADDAX,AX
ADDBX,AX
JMP[BX]
ERR:
DISPERRMS
BRA:
DISPMSGA
BRB:
DISPMSGB
BRC:
DISPMSGC
BRD:
DISPMSGD
BRE:
DISPMSGE
BRF:
DISPMSGF
CODEENDS
ENDSTART
实验步骤
1、输入并汇编此程序。
要求生成一个.LST文件。
用TYPE命令检查.LST文件,观察宏替换命令产生的指令集。
2、将OBJ文件连接成EXE文件(假设为AA.EXE)。
3、用命令DEBUGAA.EXEXXX(XXX为任意字符串)将AA.EXE带参数调入DEBUG用D命令观察DS:
0080处的命令行,记录80H处的内容和字符个数的关系。
4、退出DEBUG。
直接带参数运行此程序:
AAn(n=0--5)
依次观察并记录n从0到5时的运行结果。
实验八多重循环程序
1、掌握多重循环程序和排序程序设计方法。
2、掌握带符号数的比较转移指令:
JL,JLE,JG,JGE
3、伪指令EQU及操作符'
的使用。
ARRAYDW1234H,5673H,7FFFH,8000H,0DFFH
DW0AB5H,0369H,005FH,5634H,9069H
COUNTEQU$-ARRAY
MOVCX,COUNT
SHRCX,1
DECCX
MOVBL,-1
AGAIN:
MOVDX,CX
ANDBL,BL
JEEXIT
XORBL,BL
XORSI,SI
AGAIN1:
MOVAX,ARRAY[SI]
CMPAX,ARRAY[SI+2]
JLENCHG
XCHGARRAY[SI+2],AX
MOVARRAY[SI],AX
NCHG:
INCSI
INCSI
DECDX
JNZAGAIN1
LOOPAGAIN
EXIT:
MOVAH,4CH
INT21H
1、输入,汇编并连接此程序。
2、在DEBUG下运行此程序,记录运行结果。
3、将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。
JBE:
JGE:
JAE:
实验九子程序
1、掌握利用堆栈传递参数的子程序调用方法。
2、掌握子程序递归调用方法。
3、过程调用伪指令:
PROC,ENDP,NEAR和FAR。
4、8086指令:
CALL,RET,RETn。
5、利用RET指令退出EXE文件的方法。
实验内容及步骤
利用堆栈传递参数的子程序调用(求累加和)
程序内容:
ARY1DB1,2,3,4,5,6,7,8,9,10
COUNT1EQU$-ARY1
SUM1DW?
ARY2DB10,11,12,13,14,15,16,17,18
COUNT2EQU$-ARY2
SUM2DW?
MAINSEGMENT
MAIN,DS:
STARTPROCFAR
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVAX,COUNT1
LEAAX,ARY1
CALLFARPTRSUM
MOVAX,COUNT2
LEAAX,ARY2
RET
STARTENDP
MAINENDS
PROCESEGMENT
PROCE
SUMPROCFAR
MOVBP,SP
MOVCX,[BP+6]
MOVBX,[BP+4]
ADN:
ADDAL,[BX]
ADCAH,0
INCBX
LOOPADN
MOV[BX],AX
RET4
SUMENDP
PROCEENDS
操作步骤:
1、输入,汇编并将此程序连接成EXE文件。
2、用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程调用及进出栈指令前后(带'
;
'
的语句)的SP和堆栈内容。
3、记录最后结果:
SUM1,SUM2的段及偏移地址和它们的内容。
分析和体会
三次微处理器实验,让我获益颇多。
现在回想起来,每次程序调试成功的喜悦似乎还未淡去。
首先,此次实验最基本的收获就是通过编写一些简单的汇编了解微处理器的运作方式和内部变化情况。
实践与理论的结合,让我在学习《微处理器》时能够融会贯通,对书上的程序有了更深的理解。
知识就是力量,今天我们努力获取知识,明天我们必将使用我们掌握的知识改变世界。
还有就是看程序时要仔细一些,实验八中的ASSUME中的DS后应为DATA,之前的错误影响了程序的编译。
还要牢记运行和查看程序结果的方法。
感谢老师的辛勤指导,路漫漫其修远兮,在求知的道路上,我们还将披荆斩棘,一路向前。