微机原理循环设计实验报告.docx

上传人:b****2 文档编号:17737970 上传时间:2023-08-03 格式:DOCX 页数:12 大小:202.25KB
下载 相关 举报
微机原理循环设计实验报告.docx_第1页
第1页 / 共12页
微机原理循环设计实验报告.docx_第2页
第2页 / 共12页
微机原理循环设计实验报告.docx_第3页
第3页 / 共12页
微机原理循环设计实验报告.docx_第4页
第4页 / 共12页
微机原理循环设计实验报告.docx_第5页
第5页 / 共12页
微机原理循环设计实验报告.docx_第6页
第6页 / 共12页
微机原理循环设计实验报告.docx_第7页
第7页 / 共12页
微机原理循环设计实验报告.docx_第8页
第8页 / 共12页
微机原理循环设计实验报告.docx_第9页
第9页 / 共12页
微机原理循环设计实验报告.docx_第10页
第10页 / 共12页
微机原理循环设计实验报告.docx_第11页
第11页 / 共12页
微机原理循环设计实验报告.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理循环设计实验报告.docx

《微机原理循环设计实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理循环设计实验报告.docx(12页珍藏版)》请在冰点文库上搜索。

微机原理循环设计实验报告.docx

微机原理循环设计实验报告

一、实验目的

1、掌握循环程序的设计方法。

2、掌握比较指令、转移指令和循环指令的使用方法。

3、进一步掌握调试工具的使用方法。

二、实验预习要求

1、复习比较指令、条件转移指令和循环指令。

2、复习循环程序的结构、循环控制方法等知识。

3、读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。

4、根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。

5、从“实验习题”中任选一道题目,编写源程序,以便上机调试。

三、实验内容

计算1+2+……n=?

,其中n通过键盘输入。

要求在屏幕上提供如下信息:

Pleaseinputanumber(1627):

;出现此信息后通过键盘输入一个小于628的无符号整数

1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和

程序运行情况如下图所示(说明:

图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。

1、编程指导

(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。

将键盘输入的十进制数转换为二进制数的程序清单如下:

DATASEGMENT

INF1DB"Pleaseinputanumber(0-65535):

$"

IBUFDB7,0,6DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINF1

MOVAH,09H

INT21H

MOVDX,OFFSETIBUF;键入一个十进制数(<65535)

MOVAH,0AH

INT21H

MOVCL,IBUF+1;十进制数的位数送CX

MOVCH,0

MOVSI,OFFSETIBUF+2;指向输入的第一个字符(最高位)

MOVAX,0;开始将十进制数转换为二进制数

AGAIN:

MOVDX,10;((010+a4)10+…)10+a0

MULDX

ANDBYTEPTR[SI],0FH

ADDAL,[SI]

ADCAH,0

INCSI

LOOPAGAIN

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

本程序功能:

从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。

(2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数。

将二进制数转换为十进制数的程序清单如下:

DATASEGMENT

OBUFDB6DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETOBUF+5

MOVBYTEPTR[BX],'$'

MOVCX,10;做(DX):

(AX)/10运算

LOOP1:

MOVDX,0;被除数高16位清0

DIVCX

ADDDL,30H;将DL中的一位十进制数转换为ASCII码

DECBX

MOV[BX],DL

ORAX,AX

JNZLOOP1

;判断商是否为0,不为0继续

MOVDX,BX

MOVAH,09H

INT21H

;显示转换得到的十进制数

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

本程序功能:

将存储在AX寄存器中的二进制数转换为十进制数并显示。

2、

流程图及程序框架

(1)流程图

(2)程序框架

DATASEGMENT

INF1DB"Pleaseinputanumber(0-65535):

$"

IBUFDB7,0,6DUP(?

OBUFDB6DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

接收从键盘输入的十进制数,并将其转换为二进制数(存AX寄存器)的指令序列

MOVDS,AX

MOVCX,AX

MOVAX,0

MOVBX,1

LOOP2:

ADDAX,BX

INCBX

将AX中存放的二进制数转换为十进制数并显示的指令序列

LOOPLOOP2

CODEENDS

ENDSTART

 

3、完整源程序代码

DATASEGMENT

INF1DB"Pleaseinputanumber(0-65535):

$"

IBUFDB7,0,6DUP(?

OBUFDB6DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINF1

MOVAH,09H

INT21H

MOVDX,OFFSETIBUF

MOVAH,0AH

INT21H

MOVCL,IBUF+1

MOVCH,0

MOVSI,OFFSETIBUF+2

MOVAX,0

AGAIN:

MOVDX,10

MULDX

ANDBYTEPTR[SI],0FH

ADDAL,[SI]

ADCAH,0

INCSI

LOOPAGAIN

MOVCX,AX

MOVAX,0

MOVBX,1

LOOP2:

ADDAX,BX

INCBX

LOOPLOOP2

MOVBX,OFFSETOBUF+5

MOVBYTEPTR[BX],'$'

MOVCX,0AH

LOOP1:

MOVDX,0

DIVCX

ADDDL,30H

DECBX

MOV[BX],DL

ORAX,AX

JNZLOOP1

MOVDL,0AH

MOVAH,02H

INT21H

MOVDX,BX

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

实验截图:

 

四、实验习题

1、从自然数1开始累加,直到累加和大于60000为止,显示累加的自然数的个数和累加和。

显示格式为:

1+2+…+n=sum

其中n为累加个数,sum为累加和。

datasegment

obufdb6dup(?

eudb'+','$'

ebdb0dh,'=',0dh,'$'

dataends

displaymacrostring

movdx,offsetstring

movah,09h

int21h

endm

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movax,1

movcx,0

loop1:

adccx,ax

cmpax,1

jeall

pushax

displayeu

popax

all:

callexchange

incax

cmpcx,60000

jcloop1

pushax

pushcx

displayeb

movax,cx

callexchange

popcx

popax

movah,4ch

int21h

ret

mainendp

exchangeprocnear

pushax

pushbx

pushcx

movbx,offsetobuf+5

movbyteptr[bx],'$'

movcx,10

loop2:

movdx,0

divcx

adddl,30h

decbx

mov[bx],dl

orax,ax

jnzloop2

movdx,bx

movah,09h

int21h

popcx

popbx

popax

ret

exchangeendp

codeends

endstart

实验截图:

2、从键盘输入6个加数N1、N2、N3、N4、N5和N6(均为14位的无符号十进制整数),求和并将计算结果在屏幕上显示出来。

3、从键盘输入一个无符号十进制整数(小于65536),将其转换为二进制数,统计该二进制数中包含的1的个数,并将统计结果在屏幕上显示出来。

4、从键盘输入N个无符号十进制整数(小于256),将其转换为二进制数后存放在字节变量BUF存储区中;对这N个数进行由大到小排序,排序后将其仍存储在BUF中;最后将排序后的结果在屏幕上显示出来。

(说明,以上习题任选一道题,附上流程图及源程序代码,然后把其他的两道题删掉)

五、实验小结

这次实验虽然难度不大,但在做的过程中也遇到了不少困难,有些错误不容易找出来,必须仔细的看和修改,所以要求我们养成良好的编码风格和习惯,尤其是源程序很长的时候,这就显得尤为重要。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2