微机原理实验指导书09测控(4)

2019-03-16 13:00

先键入E3500,然后输入01 02 03 04 05 06 07 08。 (3)先运行程序,待程序运行停止。

(4)键入D3510显示转换结果,应为:0C 22 38 4E。 (5)反复输入几组数据,验证程序功能。 3.4 思考题

1. 实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?

2. 将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值? 3. 在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次? 4. 自编ASCII码转换十六进制、十六进制小数转换二进制、二进制转换BCD码的程序,并调试运行。

实验四 运算类编程实验

4.1 实验目的

1. 掌握使用运算类指令编程及调试方法。

2. 掌握运算类指令对各状态标志位的影响及其测试方法。 3. 学习使用软件监视变量的方法。 4.2 实验设备

PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。 4.3 实验内容及步骤

80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4.1所示的数据类型进行算术运算。

表4.1 数据类型算术运算表 数制 运算符 操作数 二进制 带符号 无符号 +、-、×、÷ 字节、字、多精度 BCD码 组合 +、- 非组合 +、-、×、÷ 字节(二位数字) 字节(一位数字) 1. 二进制双精度加法运算

计算X+Y=Z,将结果Z存入某存储单元。实验程序参考如下。

本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的和,将结果存入高地址存储单元中。由于低16运算后可能向高位产生进位,因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。 实验程序清单(例程文件名为:A3-1.ASM) SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS

PUBLIC XH, XL, YH, YL, ZH, ZL ;设置全局变量 DATA SEGMENT

XL DW ? ;X低位 XH DW ? ;X高位 YL DW ? ;Y低位

16

YH DW ? ;Y高位 ZL DW ? ;Z低位 ZH DW ? ;Z高位 DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, XL

ADD AX, YL ;X低位加Y低位

MOV ZL, AX ;低位和存到Z的低位 MOV AX, XH

ADC AX, YH ;高位带进位加 MOV ZH, AX ;存高位结果

JMP START ;在此行设置断点,以观察变量值 CODE ENDS END START

实验步骤

(1)编写程序,经编译、链接无误后装入系统。

(2)程序装载完成后,点击‘变量区’标签将观察窗切换到变量监视窗口。 (3)点击

,将变量XH,XL,YH,YL,ZH,ZL添加到变量监视

窗中,然后修改XH,XL,YH,YL的值,如图4.1所示,修改XH为0015,XL为65A0,YH为0021,YL为B79E。

(4)在JMP START语句行设置断点,然后运行程序。

(5)当程序遇到断点后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E。

(6)修改XH,XL,YH和YL的值,再次运行程序,观察实 图4.1 变量监视窗口 验结果,反复测试几组数据,验证程序的功能。

2. 十进制的BCD码减法运算

计算X-Y=Z,其中X、Y、Z为BCD码。实验程序参考例程。 实验程序清单(例程文件名为A3-2.ASM) SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS

PUBLIC X, Y, Z ;定义全局变量 DATA SEGMENT X DW ? Y DW ? Z DW ? DATA ENDS

17

CODE SEGMENT

ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AH, 00H SAHF

MOV CX, 0002H MOV SI, OFFSET X MOV DI, OFFSET Z A1: MOV AL, [SI] SBB AL, [SI+02H] DAS PUSHF

AND AL, 0FH POPF

MOV [DI], AL INC DI INC SI LOOP A1

JMP START ;设置断点,以方便观察变量。 CODE ENDS

END START 实验步骤

(1)输入程序,编译、链接无误后装入系统。 (2)点击

将变量X,Y,Z添加到变量监视窗中,并为X,Y赋值,假定存入40与12的

BCD码,即X为0400,Y为0102。

(3)在JMP START语句行设置断点,然后运行程序。

(4)程序遇到断点后停止运行,观察变量监视窗,Z应为0208。

(5)重新修改X与Y的值,运行程序,观察结果,反复测试几次,验证程序正确性。 3. 乘法运算

实现十进制数的乘法运算,被乘数与乘数均以BCD码的形式存放在内存中,乘数为1位,被乘数为5位,结果为6位。实验程序参考例程。 实验程序清单(例程文件名为A3-3.ASM) SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS

DATA SEGMENT

DATA1 DB 5 DUP(?) ;被乘数 DATA2 DB ? ;乘数 RESULT DB 6 DUP(?) ;计算结果 DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

18

START: MOV AX,DATA MOV DS,AX

CALL INIT ;初始化目标地址单元为0 MOV SI,OFFSET DATA2 MOV BL,[SI]

AND BL,0FH ;得到乘数 CMP BL,09H JNC ERROR

MOV SI,OFFSET DATA1 MOV DI,OFFSET RESULT MOV CX,0005H A1: MOV AL,[SI+04H] AND AL,0FH CMP AL,09H JNC ERROR DEC SI MUL BL

AAM ;乘法调整指令 ADD AL,[DI+05H] AAA

MOV [DI+05H],AL DEC DI

MOV [DI+05H],AH LOOP A1

A2: MOV AX,4C00H

INT 21H ;程序终止 ;===将RESULT所指内存单元清零=== INIT: MOV SI,OFFSET RESULT MOV CX,0003H MOV AX,0000H A3: MOV [SI],AX INC SI INC SI LOOP A3 RET ;===错误处理===

ERROR: MOV SI,OFFSET RESULT ;若输入数据不符合要求则RESULT所指向内存单元全部写入E

MOV CX,0003H MOV AX,0EEEEH A4: MOV [SI],AX INC SI INC SI LOOP A4

19

JMP A2 CODE ENDS

END START

实验步骤

(1)编写程序,编译、链接无误后装入系统。

(2)查看寄存器窗口获得CS的值,使用U命令可得到数据段段地址DS,然后通过E命令为被乘数及乘数赋值,如被乘数:01 02 03 04 05,乘数:01,方法同实验内容1。 (3)运行程序,待程序运行停止。

(4)通过D命令查看计算结果,应为:00 01 02 03 04 05;当在为被乘数和乘数赋值时,如果一个数的低4位大于9,则查看计算结果将全部显示为E。 (5)反复测试几组数据,验证程序的正确性。

实验五 综合编程实验

一、分支程序设计实验 5.1 实验目的

1. 掌握分支程序的结构。

2. 掌握分支程序的设计、调试方法。 5.2 实验设备

PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。 5.3 实验内容

设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图5.1所示。

(a) (b) (c)

图5.1 源数据块与目的数据块在存储中的位置情况

对于两个数据块分离的情况,如图5.1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:

当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图5.1(b)所示。

当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图5.1(c)所示。

实验程序流程图如图5.2所示。

20


微机原理实验指导书09测控(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:怎么才能终身学习?像孩子一样就行

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: