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

上传人:b****1 文档编号:14330947 上传时间:2022-10-22 格式:DOCX 页数:9 大小:35.92KB
下载 相关 举报
微机原理循环设计实验报告Word下载.docx_第1页
第1页 / 共9页
微机原理循环设计实验报告Word下载.docx_第2页
第2页 / 共9页
微机原理循环设计实验报告Word下载.docx_第3页
第3页 / 共9页
微机原理循环设计实验报告Word下载.docx_第4页
第4页 / 共9页
微机原理循环设计实验报告Word下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

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

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

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

DATASEGMENT

INF1DB"

Pleaseinputanumber(0-65535):

$"

IBUFDB7,0,6DUP("

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVA*,DATA

MOVDS,A*

MOVD*,OFFSETINF1

MOVAH,09H

INT21H

MOVD*,OFFSETIBUF;

键入一个十进制数(<

65535)

MOVAH,0AH

INT21H

MOVCL,IBUF+1;

十进制数的位数送C*

MOVCH,0

MOVSI,OFFSETIBUF+2;

指向输入的第一个字符(最高位)

MOVA*,0;

开始将十进制数转换为二进制数

AGAIN:

MOVD*,10;

((0⨯10+a4)⨯10+…)⨯10+a0

MULD*

ANDBYTEPTR[SI],0FH

ADDAL,[SI]

ADCAH,0

INCSI

LOOPAGAIN

MOVAH,4CH

CODEENDS

ENDSTART

本程序功能:

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

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

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

DATASEGMENT

OBUFDB6DUP("

DATAENDS

CODESEGMENT

ASSUMECS:

DATA

MOVDS,A*

MOVB*,OFFSETOBUF+5

MOVBYTEPTR[B*],'

$'

MOVC*,10;

做(D*):

(A*)/10运算

LOOP1:

MOVD*,0;

被除数高16位清0

DIVC*

ADDDL,30H;

将DL中的一位十进制数转换为ASCII码

DECB*

MOV[B*],DL

ORA*,A*

JNZLOOP1

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

MOVD*,B*

MOVAH,09H

INT21H

显示转换得到的十进制数

INT21H

ENDSTART

本程序功能:

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

2、

流程图及程序框架

(1)流程图

(2)程序框架

INF1DB"

IBUFDB7,0,6DUP("

OBUFDB6DUP("

CODESEGMENT

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

MOVC*,A*

MOVA*,0

MOVB*,1

LOOP2:

ADDA*,B*

INCB*

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

LOOPLOOP2

CODEENDS

3、完整源程序代码

INF1DB"

Pleaseinputanumber(0-65535):

IBUFDB7,0,6DUP("

OBUFDB6DUP("

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

START:

MOVA*,DATA

MOVDS,A*

MOVD*,OFFSETINF1

MOVAH,09H

INT21H

MOVD*,OFFSETIBUF

MOVAH,0AH

MOVCL,IBUF+1

MOVCH,0

MOVSI,OFFSETIBUF+2

MOVA*,0

AGAIN:

MOVD*,10

MULD*

ANDBYTEPTR[SI],0FH

ADDAL,[SI]

ADCAH,0

INCSI

LOOPAGAIN

MOVC*,A*

MOVB*,1

LOOP2:

ADDA*,B*

INCB*

LOOPLOOP2

MOVB*,OFFSETOBUF+5

MOVBYTEPTR[B*],'

MOVC*,0AH

LOOP1:

MOVD*,0

DIVC*

ADDDL,30H

DECB*

MOV[B*],DL

ORA*,A*

JNZLOOP1

MOVDL,0AH

MOVAH,02H

MOVD*,B*

MOVAH,4CH

CODEENDS

ENDSTART

实验截图:

四、实验习题

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

显示格式为:

1+2+…+n=sum

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

datasegment

obufdb6dup("

eudb'

+'

'

ebdb0dh,'

='

0dh,'

dataends

displaymacrostring

movd*,offsetstring

movah,09h

int21h

endm

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

mova*,data

movds,a*

mova*,1

movc*,0

loop1:

adcc*,a*

cmpa*,1

jeall

pusha*

displayeu

popa*

all:

calle*change

inca*

cmpc*,60000

jcloop1

pushc*

displayeb

mova*,c*

calle*change

popc*

movah,4ch

int21h

ret

mainendp

e*changeprocnear

pusha*

pushb*

pushc*

movb*,offsetobuf+5

movbyteptr[b*],'

movc*,10

loop2:

movd*,0

divc*

adddl,30h

decb*

mov[b*],dl

ora*,a*

jnzloop2

movd*,b*

popc*

popb*

popa*

ret

e*changeendp

codeends

endstart

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

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

4、从键盘输入N个无符号十进制整数(小于256),将其转换为二进制数后存放在字节变量BUF存储区中;

对这N个数进行由大到小排序,排序后将其仍存储在BUF中;

最后将排序后的结果在屏幕上显示出来。

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

五、实验小结

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

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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