华工微机实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机实验报告

学院电子与信息学院

专业电子科学与技术(卓越班)学生姓名XXX

任课教师XXX

提交日期2014/06/23

实验二 数码转码编程及程序调试

一. 实验目的 1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的理解; 2. 进一步熟悉键盘使用方法; 3. 进一步熟悉调试程序的方法。 二. 实验设备

装有汇编软件的IBMPC 机一台 三. 实验内容及步骤

计算机输入设备输入的信息一般ASCii 码或BCD 码表示的数据或字符,CPU 处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设有必须一外设的要求变为ASCII 码,BCD 码或七段显示码等。因此,在应用软件中各累数制的转换和代码的转换是必不可少的。

计算机于外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。 1.将ASCII 码表示的十进制数转换为二进制数 十进制数可表示为:

l n

l l n n n

n D D D D 10*10* (10)

*10*60

01

1∑=--=+++

L D 代表十进制1,2,3,···9,0;

((...(10*0

=∑=l n

l l

D

012110*)...10*)10*)10*D D D D D n n l n +++++--

由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn 开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。程序流程图如图2-2。这里我们规定:被转换的ASCII 码十进制数存放在3500h ~3504h 单位中。而转换结果在3510~3511单位中. 实验步骤

(1) 输入程序并检查无误。

(2) 在3500~3504h 单元存入十进制12的ASCII 码,即e3500,并输入

3030303132。

(3) g =2000,运行程序,并用CTR+C 来中断程序返回监控态。 (4) 用d3510查看结果,应为3510 0C 00 (5) 反复试几组数,考查程序的正确性。

实验流程图如下:

Y

实现代码如下:

STACK SEGMENT STACK 'STACK'

DB 50 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK

START:MOV BX,0AH

MOV SI,3500H

MOV DI,3510H

MOV CX,5

MOV AX,0

MOV DH,0

AGAIN:MUL BX

MOV DL,BYTE PTR[SI]

SUB DL,30H

CLC

ADD AX,DX

INC SI

LOOP AGAIN

EXIT:MOV WORD PTR[DI],AX

MOV AX,4C00H

INT 21H

CODE ENDS

END START

实验结果如下:

图2.1-1:输入3030303132,3510~3511是0C00(正确读数是000C)

图2.1-2:输入3031303233,3510~3511是FF03(正确读数是03FF)

图2.1-3:输入3031303132,3510~3511是F403(正确读数是03F4)

实验结论:程序执行结果正确

2将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。把它转换成BCD码后,再按位分别存入350A起始的内存单元内。若输入的不是十进制的ASCII码,则显示FF.

实验步骤:

(1)输入程序并检查无误。

(2)在3500~3504H单元存入五位十进制数的ASCII码,即e3500

并输入31,32,33,34,35。

(3) G=2000,运行以上程序。

(4) D350A,显示结果为:0000:350A 01 02 03 04 CC…

(5)反复试几组数,考查程序的正确性。

实验流程图如下:

实验代码实现如下(实际代码实现与流程图顺序有小部分出入,整体框架一样,下同):

STACK SEGMENT STACK 'STACK'

DB 100 DUP(?)

STACK ENDS

;

CODE SEGMENT

ASSUME CS:CODE,SS:STACK

ORG 2000H

START:

MOV SI,3500H

MOV DI,350AH

MOV CX,05H

MOV DL,0FFH

AGAIN: MOV AL,BYTE PTR[SI]

CMP AL,39H

JA ERROR

CMP AL,30H

JB ERROR

SUB AL,30H

MOV [DI],AL

JMP EXIT

ERROR: MOV [DI],DL

EXIT: INC SI

INC DI

LOOP AGAIN

MOV AX ,4C00H

INT 21H

CODE ENDS

END START

实验结果如下:

图2.2-1:输入31 32 33 34 35,在350A开始看到:01 02 03 04 05

图2.2-2:输入31 33 39 3A 34,在350A开始看到:01 03 09 FF 04 B4

相关文档
最新文档