微机实验报告Word格式文档下载.docx
- 文档编号:21324008
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:132.48KB
微机实验报告Word格式文档下载.docx
《微机实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机实验报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
looploop1
4.实验结果:
A、B、C三个数组初始化为:
ADB31H,32H,33H,34H,35H,36H,37H,38H,39H,40H,
41H,42H,43H,44H,45H
BDB31H,32H,33H,34H,35H,46H,47H,48H,49H,50H,
51H,52H,53H,54H,55H,
56H,57H,58H,59H,60H
TDB15DUP('
*'
),'
$'
5.实验总结分析:
使用多重循环可以解决更为复杂的问题。
B中找出是否有相同的数,当然需要将A中的那个数逐一与B中的数进行比较,这里需要一个循环。
而要将所有相同数找出,则必定要遍历A,这里又需要一个循环。
所以,这个题目必定是一个嵌套的双重循环。
实验2
统计BLOCK1和BLOCK2两个单元数据中,对应位不同的有多少位。
2.流程图:
3.代码:
DATASSEGMENT
BLOCK1DB'
123456789'
BLOCK2DB'
987456123'
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVBX,0
MOVCX,9
LEASI,BLOCK1
LEADI,BLOCK2
LOP:
LODSB
CMPAL,[DI]
JE
NEXT
INCBX
NEXT:
INCDI
DECCL
JNZLOP
MOVAH,2
ADDBL,30H
MOVDL,BL
INT21H;
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
5.运行结果:
6
6.实验心得与体会
实验三:
1.实验目的及要求:
编写一个汇编语言程序,要求从键盘接收一个四位16进制数,并显示出与它等值的二进制数
2.实验设计分析
将接收到的数转成16进制数,将这个数保存在一个通用寄存器中(如AX),然后对AX循环做16次SHL,由carry标志寄存器的状态来判断显示0/1。
十六位二进制数保存在BX中,对BX中的二进制数循环左移,每次移一位,然后把BL中的二进制数送给AL,再对AL的前7位进行屏蔽,只留一位原本是最高位的那位二进制数,它要么为1,要么为0。
然而把AL中的这位二进制数转换为十进制数,并且输出,由于AL高7位都为0,所以转换位十进制后,然后要么为1,要么为0,并且与那位二进制数相对应。
这样循环做16次,就把整个BX中的二进制数都显示出来。
3.流程图:
N
Y
4.代码:
DATASEGMENT
STR1DB'
INPUTAHEXNUM:
$'
HEXDB5;
计划输入的字符个数(含回车符)
NNNDB0;
存放实际输入的字符个数
DB5DUP(?
BINDW?
;
输入数字的二进制形式的存放单元
ERRDB0AH,0DH,'
ERROR!
'
DB0AH,0DH,'
IHAVENOTIMETOPLAYWITHYOU!
STR2DB13,10,'
BINARYIS:
DATAENDS
;
--------------------------------------------
STACKSEGMENTPARASTACK'
STACK'
DB100DUP(?
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
LEADX,STR1;
INPUTAHEXNUM'
MOVAH,9;
显示字符串
LEADX,HEX
MOVAH,10;
等着输入四位HEX数
---------------------------------------
下面进行转换
MOVBIN,0;
先把二进制数字单元清零
LEASI,HEX+2;
取输入字符串的首地址
MOVCH,NNN;
取输入字符的个数,用来控制循环处理的次数
CONV:
MOVBL,[SI];
取来一个字符
CMPBL,0DH;
和回车符进行比较
JZEND0;
是,即结束
CMPBL,'
0'
JBERROR;
小于'
转移
F'
JAERROR;
大于'
9'
JNAA2B;
不大于'
就去变换
A'
JNBA2B;
不小于'
JMPERROR;
其它符号都是错误
A2B:
SUBBL,30H;
ASC-->
BIN
CMPBL,10
JBA2B_END
SUBBL,07H;
A2B_END:
MOVBH,0;
弄成16位数
PUSHCX
MOVAX,BIN;
把原来的数字乘以16
MOVCX,16
MULCX
ADDAX,BX;
加上新输入的
MOVBIN,AX;
存结果,这就是二进制数
INCSI
POPCX
DECCH;
处理次数减一
JNZCONV;
非零转移
DISP:
LEADX,STR2;
取来数字
MOVCX,16;
显示16位数
DDDD:
MOVDL,'
先计划显示0
TESTAX,8000H;
测试最高位
JZDDD1
INCDL;
非0就显示1
DDD1:
PUSHAX
MOVAH,2;
显示DL中的ASCII码
POPAX
SHLAX,1;
左移
LOOPDDDD;
CX-1,非零转移
JMPEND0;
16位显示完毕,转到结束
ERROR:
LEADX,ERR
MOVAH,09H;
错误信息提示
END0:
MOVAH,4CH;
返回DOS
CODEENDS
5运行结果
十六进制转化为二进制:
5.实验的心得体会:
我的收获是对进制数转换的原理有了较为清楚地理解,可以解释原来不懂得程序,对各种寄存器的跳转有了一定的了解,同时认识到由于寄存器的数量有限,我们必须用其他的方式来解决,同时可以解决有时候寄存器不够的情况,对应进一步学习汇编有了一定的推动作用,汇编基础有了一定的提高。
通过这个课程设计,我对汇编有了一定的体会,因为汇编语言是可以直接和机器语言联系。
从而使得汇编语言的利用率很高,处理相同的程序比高级语言速度快很多,但是他操作也没有高级语言那么方便,但是总体来说,汇编还是很强大的,他帮助我们很深的理解原来不懂得程序。
实验4
编写程序,将一串凌乱的字母按从小到大的顺序排列
2.流程图:
3.代码:
DATADB'
gfed$'
DATAS
MOVDS,AX
MOVSI,1
LOP1:
MOVDI,SI
INCDI
MOVAL,DATA[SI-1]
LOP2:
CMPAL,DATA[DI-1]
JBELOP3
XCHGDATA[DI-1],AL
MOVDATA[SI-1],AL
LOP3:
CMPDI,4
JBELOP2
CMPSI,3
JBELOP1
SHOW:
MOVAH,9
MOVDX,OFFSETDATA
INT21H
实验五
一.实验要求:
编写一个程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NOMATCH’。
二.流程图:
三.代码:
DSEGSEGMENT
STRING1DB‘Iamastudent.’
STRING2DB‘Iamastudent!
’
YESDB‘MATCH’,0DH,0AH,‘$’
NODB‘NOMATCH’,0DH,0AH,‘$’
DSEGENDS
;
--------------------------------------------------------------------------
CSEGSEGMENT
MAINPROCFAR
CSEG,DS:
DSEG,ES:
DSEG
PUSHDS;
设置返回DOS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX;
给DS赋值
MOVES,AX;
给ES赋值
BEGIN:
LEASI,STRING1;
设置串比较指令的初值
LEADI,STRING2
CLD
MOVCX,STRING2-STRING1
REPECMPSB;
串比较
JNEDISPNO
LEADX,YES;
显示MATCH
JMPDISPLAY
DISPNO:
LEADX,NO;
显示NOMATCH
DISPLAY:
MOVAH,9;
显示一个字符串的DOS调用
INT21H
RET
MAINENDP
CSEGENDS;
以上定义代码段
ENDSTART
实验六
编程从键盘输入一个二位十进制的月份数(01~12),然后显示出相应的英文缩写名
(1)感受和学习子程序的定义与设计方法,完成相应程序设计
(2)学习模块化程序的基本设计方法
(3)进一步感受和学习分支、循环等基本程序结构
(4)进一步感受和学习汇编语言程序的设计方法、语法和技巧
2.流程图
3.代码
monthDB'
Jan'
DB'
Feb'
Mar'
Apr'
May'
Jun'
Jul'
Agu'
Sep'
Oct'
Nov'
Dec'
string1DB0DH,0AH,'
Inputthemonthnumble(PressENTERtoquit):
BUF1DB0DH,0AH,10DUP(0)
BUF2DB81,?
80DUP(?
DB100DUP(0)
MOVES,AX
CALLINPUT
CMP[BUF2+2],0DH
JZEXIT
CALLSUB1
CALLOUTPUT
JMPLOP1
EXIT:
INPUTPROCNEAR;
字符输入
PUSHDX
LEADX,string1
MOVAH,09H
LEADX,BUF2
MOVAH,0AH
POPDX
RET
INPUTENDP
OUTPUTPROCNEAR;
字符输出
MOV[DI],'
LEADX,BUF1
OUTPUTENDP
SUB1PROCNEAR
PUSHBX
MOVAL,[BUF2+2]
CMPAL,30H
JNZNEXT1
MOVAL,[BUF2+3]
ANDAX,0FH
DECAX
JMPNEXT2
NEXT1:
ADDAX,0AH
NEXT2:
MOVBX,AX
SHLAX,1
ADDBX,AX
MOVSI,BX
LEADI,BUF1
ADDDI,2
MOVCX,3
REPMOVSB
POPBX
SUB1ENDP
3.实验心得与体会
进一步感受和学习分支、循环等基本程序结构。
进一步感受和学习汇编语言程序的设计方法、语法和技巧
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 报告