微机实验报告Word格式文档下载.docx

上传人:b****6 文档编号:21324008 上传时间:2023-01-29 格式:DOCX 页数:18 大小:132.48KB
下载 相关 举报
微机实验报告Word格式文档下载.docx_第1页
第1页 / 共18页
微机实验报告Word格式文档下载.docx_第2页
第2页 / 共18页
微机实验报告Word格式文档下载.docx_第3页
第3页 / 共18页
微机实验报告Word格式文档下载.docx_第4页
第4页 / 共18页
微机实验报告Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

微机实验报告Word格式文档下载.docx

《微机实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机实验报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

微机实验报告Word格式文档下载.docx

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.实验心得与体会

进一步感受和学习分支、循环等基本程序结构。

进一步感受和学习汇编语言程序的设计方法、语法和技巧

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1