实验四Word格式文档下载.docx

上传人:b****5 文档编号:18153060 上传时间:2022-12-13 格式:DOCX 页数:11 大小:210.49KB
下载 相关 举报
实验四Word格式文档下载.docx_第1页
第1页 / 共11页
实验四Word格式文档下载.docx_第2页
第2页 / 共11页
实验四Word格式文档下载.docx_第3页
第3页 / 共11页
实验四Word格式文档下载.docx_第4页
第4页 / 共11页
实验四Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

实验四Word格式文档下载.docx

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

实验四Word格式文档下载.docx

d

c

b

a

输入DCBA

1

0000

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

3.对实验内容1,七段数码管字型代码与输入的关系如下表:

四、参考流程图

1.实验内容一的参考流程图

图4-3

2.实验内容二的参考流程图

图4-4

五、参考程序

1.内容一的参考程序

源程序清单如下:

datasegment

ioportequ0c400h-0280h

io8255aequioport+288h

io8255bequioport+289h

io8255cequioport+28ah

io8255kequioport+28bh

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

mesg1db0dh,0ah,'

Inputanum(0--9),otherkeyisexit:

'

0dh,0ah,'

$'

bzdb?

czdb04h

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8255k;

使8255的A口为输出方式

movax,80h

outdx,al

sss0:

movsi,offsetbz

movcx,04h

sss1:

movdx,offsetmesg1;

显示提示信息

movah,09h

int21h

movah,01;

从键盘接收字符

cmpal,'

0'

;

是否小于0

jlexit;

若是则退出

9'

是否大于9

jgexit;

subal,30h;

将所得字符的ASCII码减30H

mov[si],al;

存入显示缓冲区

incsi;

显示缓冲区指针加1

deccx;

判断输入满4个数字吗?

jnzsss1;

不满继续

movsi,offsetbz;

从显示缓冲区取第一个数字的BCD码

moval,[si]

andal,0fh;

屏蔽高四位暂存AL

incsi;

movah,[si];

取第二个数字的BCD码到AH

salah,4h;

右移4次到高四位

addal,ah;

两个BCD码合并成一个字节

movbl,al;

暂存入BL

incsi

moval,[si];

取第三个数字的BCD码

andal,0fh

incsi

movah,[si];

取第四个数字的BCD码到AH

salah,4h

addah,al

moval,ah

movdx,io8255a;

从8255的A口输出(后两个数字)

outdx,al

moval,bl

movdx,io8255b;

从8255的B口输出(前两个数字)

moval,0f0h

movdx,io8255c;

从8255的C口输出位码

movdl,0ffh

movah,06

int21h

jesss0;

有键按下则退出

exit:

movah,4ch;

返回

codeends

endstart

2.内容二的参考程序

ioportequ0C400h-0280h

io8255cequioport+28ah

io8255kequioport+28bh

io8255aequioport+288h

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;

段码

buffer1db01h,02h,03h,04h,05h,06h,07h,08h;

存放要显示的十位和个位

condb?

位码

assumecs:

code,ds:

将8255设为A口C口输出

moval,80h

loop2:

moval,08h;

设置数码管位计数器初值到CON

movbyteptrcon,al

movsi,offsetbuffer1;

置显示缓冲器指针SI

movah,7fh;

置位码初值

disp0:

movcx,0ffffh

movbl,ds:

[si];

取显示缓冲区显示值存BX

movbh,0h

pushsi

movdx,io8255c;

位码从C口输出

moval,ah

outdx,al

movdx,io8255a

movsi,offsetled;

置led数码表偏移地址为SI

addsi,bx;

求出对应的led数码

moval,byteptr[si]

outdx,al;

段码从A口输出

disp1:

loopdisp1;

延时

movcx,0ffffh

disp2:

loopdisp2

rorah,01h;

位码右移1位

popsi

incsi;

moval,byteptrcon

decal

movbyteptrcon,al

jnzdisp0;

数码管位计数器减1为0吗?

,不为0继续

movdx,io8255a;

为0,关数码管显示

moval,0

jeloop2;

movah,4ch;

endstart

4.实验总结:

在这次的试验中,我们主要做的是验证性试验,首先我们将编写好的程序执行了一遍,但是发现输出的结果不是预想的,出现这个问题的原因是什么的,经过一番的思考后,发现是高低位的问题,后来通过调整线序,经过一番的调整后,结果输出正确了。

后来在经过研究代码后,发现不用调整连线顺序也可以解决问题,于是我就仔细的看代码,后来修改了代码,问题也同样解决了。

在本次的实验中我学会了解决问题的途径是多种的,我们应该学会变通,当然也增加了我阅读汇编程序的能力,锻炼了我的动手能力。

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

当前位置:首页 > 求职职场 > 自我管理与提升

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

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