微机原理与接口技术实验报告Word文档下载推荐.docx
- 文档编号:21448073
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:20
- 大小:1.20MB
微机原理与接口技术实验报告Word文档下载推荐.docx
《微机原理与接口技术实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,M1
MOVBX,N
MULBX;
与32位数的低16位相乘
MOVSUM[2],DX
MOVSUM[4],AX
MOVAX,M2
与32位数的高16位相乘
CLC
ADDSUM[2],AX
ADCSUM,DX
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
程序调试过程;
调试环境为emu8086
根据程序的运行进行单步分析,可以得出每条指令语句在寄存器和内存中的执行情况。
16位数与32位数的低16位相乘图示为
16位数与32位数的高16位相乘图示为
最后对数据进行分配,按位组合为
此时即实现了2个数的相乘,结果存放在相应的寄存器中。
该程序主要是对寄存器的实验进行合理的分配,熟悉乘法运算指令及其结果。
第二题:
试编制程序,计算出从2开始的前10个质数.
算法原理:
已知2为第一个质数,然后被除数从2依次递增,除数从2递增,将被除数依次除以比它自己小的数字,然后将余数与0比较,若等于0,则其不是质数,若被除数递增至本身,则该数位质数。
算法流程图为
源程序代码为:
DATASEGMENT
VARDW1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
RESULTDW10DUP(?
MDW2
DATAENDS
STACKSEGMENT
TOPLABELWORD
STACKENDS
CODESEGMENT
CODE,DS:
DATA,SS:
STACK
MOVAX,DATA
MOVAX,STACK
MOVSS,AX
MOVSP,OFFSETTOP
CALLQIUSHU
QIUSHUPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVBX,4
MOVRESULT,2
MOVSI,0
AGAIN1:
MOVDX,[M]
MOVAX,[VAR+BX]
AGAIN2:
MOVAX,[VAR+BX]
CMPDX,[VAR+BX-2]
JGNEXT2
DIVDL
CMPAH,0
JNENEXT1
INCBX
JMPAGAIN1
NEXT1:
INCDX
JMPAGAIN2
NEXT2:
INCSI
CMPSI,18
JGDONE
MOVDI,[VAR+BX]
MOV[RESULT+SI],DI
POPDX
POPCX
POPDI
POPAX
DONE:
RET
QIUSHUENDP
CODEENDS
ENDSTART程序运行结果为:
在程序单步调试过程中可以读取当前寄存器和内存的占用情况和所存的数据,
最后得出前十个质数分别为
第三题:
编写一个通用多字节数相加的宏定义,并调用它实现多字节数的加法,注意观察汇编时宏调用被展开的情况
首先定义一个宏,实现某项功能,然后在主程序中调用该宏,即可在单步调试过程中观察到该宏的调用及展开过程。
程序源代码为:
DADDMACROC,M1,M2
MOVSI,OFFSETM1
MOVDI,OFFSETM2
AGAIN:
MOVAL,[SI]
ADC[DI],AL
INCDI
DECC
JNZAGAIN
ENDM
VAR1DB1,2,3,4
VAR2DB1,2,3,4
MOVCX,4
DADDCX,VAR1,VAR2
ENDSTART
程序运行结果为:
此时实现宏的调用:
第四题:
编写程序:
屏幕显示“Password:
”,随后从键盘读入字符串,并比较这个字符串与程序内部设定的字符串。
若二者相同则显示“Hello!
”,否则显示“Sorry!
”,注意:
要求键盘输入字符不能直接回显在显示器上,而要用*号代替
首先编写一段程序,用来读取和记录从键盘输入的字符串,现实在屏幕上用*代替,然后再输入一串字符,与记录的字符串进行逐个比较,输出结果。
程序流程图为:
PASSWDB'
PASSWORD:
'
0DH,0AH,'
$'
DAT1DB'
1234'
DAT2DB10DUP(0)
STR1DB'
HELLO!
STR2DB'
SORRY!
DATAENDS
DATA
MOVAX,DATA
XORAX,AX
MOVDI,OFFSETDAT2
MOVSI,OFFSETDAT1
LEADX,PASSW
MOVAH,09H
INPUT:
MOVAH,07H
CMPAL,0DH
JZCHECK
MOVDL,'
*'
MOVAH,02H
MOV[DAT2+SI],AL
INCSI
JMPINPUT
CHECK:
CMPSI,4
JNESORRY
AGAIN:
DECSI
MOVBL,[DAT1+SI]
MOVAL,[DAT2+SI]
CMPBL,AL
JEAGAIN
CMPSI,0
HELLO:
LEADX,STR1
JMPDONE
SORRY:
LEADX,STR2
DONE:
程序运行结果为:
第五题:
编写一个汇编语言程序,实现N!
(N大于等于0)
N!
=N*(N-1)*(N-2)……….*1
该题适合用递归子程序的方法来实现,调用若干次递归函数,直到N=1,即可得出结果。
程序流图为:
源程序文件为:
VAL_NDW?
RESULTDW?
TOPLABELWORD
DW128DUP(0)
CODE1SEGMENT
MAINPROCFAR
CODE1,DS:
PUSHDS
SUBAX,AX
MOVBX,OFFSETRESULT
MOVBX,VAL_N
CALLFARPTRFACT
MAINENDP
CODE1ENDS
FRAMESTRUCT
SAVE_BPDW?
SAVE_CS_IPDW2DUP(?
NDW3
RESULT_ADDRDW?
FRAMEENDS
FACTPROCFAR
PUSHBP
MOVBP,SP
MOVBX,[BP].RESULT_ADDR
MOVAX,[BP].N
CMPAX,0
JEDONE
DECAX
MOVAX,[BX]
MUL[BP].N
JMPSHORTRETURN
MOVAX,1
RETURN:
MOV[BX],AX
POPBX
POPBP
RET4
FACTENDP
然后可以计算N的阶乘。
实验总结:
汇编语言作为一种以处理器指令系统为基础的低级程序设计语言,可以直接有效的控制计算机硬件。
汇编语言主要是在处理器的寄存器内实现逻辑与算术运算,指令较为复杂,语句繁琐。
此次的程序设计主要是熟悉汇编的语法,语义及编程规则,题目不太复杂,涉及到了宏指令,伪指令,循环语句,递归调用等。
程序的执行过程中,可以实行单步调试过程,清晰的观察和分析寄存器,内存中地址和数据的变化,所产生的一些错误主要是由于定义的时候不规范产生的。
程序的执行结果之类的跟事先的流程图所显示的基本一样。
此次试验对于我们熟悉汇编语句,语法,和编程软件及调试过程都有很大帮助。
对于汇编语言,还是应该熟悉底层硬件结构,然后再实验中不断提高。
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;
陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;
不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;
亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;
故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;
陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 实验 报告