中南大学通信系微机原理实验报告 - 图文

更新时间:2024-02-27 18:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中南大学

微机原理与接口技术实验报告

学生姓名: 学号:

专业班级: 通信工程

指导老师: 梁建武

学院: 信息科学与工程学院

目录

第一部分 硬件实验

1.1 实验一 使用 ADC0809 的 A/D 转换实验 1.2 实验二 使用 DAC0832 的 D/A 转换实验(一) 1.3 实验三 使用 DAC0832 的 D/A 转换实验(二) 1.4 实验四 8255A 可编程并行口实验 1.5 实验五 8253A 定时/计数器实验

1.6 实验六 使用8259A的单级中断控制实验 1.7 实验七 小直流电机调速实验

1.8 实验八 使用8251A的串行接口应用实验(一) 1.9 实验九 8279A可编程键盘显示接口实验 1.10 实验十 步进电机控制

1.11实验十一 用D/A、A/D实验闭环测试

1.12实验十二 用0832和8255实现对直流电机的调速控制

第二部分 DEBUG实验 第三部分 汇编实验 实验心得

参考文献

第一部分硬件实验

实验一、 使用 ADC0809 的 A/D 转换实验 一、实验目的

1、加深理解逐次逼近法模数转换器的特征和工作原理,掌握 ADC0809 的接口方法以及 A/D输入程序的设计和调试方法。 二、预备知识

逐次逼近法 A/D 也称逐次比较法 A/D。它由结果寄存器、D/A、比较器和置位控制逻辑等部件组成,如图 6-1 所示

图 6-1 逐次逼近法

三、实验原理

1、本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种 8 路模拟输入、8 位数字输出的逐次逼近法 A/D 器件,转换时间约 100us,转换精度为±1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁存器,故可以与 8088 微机总线直接接口。 2、实验代码: MOV CX,0500H DELAY: LOOP DELAY MOV DX,ADPORT

IN AL,DX MOV CL,AL

CALL CONVERS CALL LEDDISP

JMP ADCON

CONVERS:MOV BH,0H

AND AL,0FH MOV BL,AL

MOV AL,CS:[BX+DATA2] MOV BX,DATA1+7 MOV DS:[BX],AL DEC BX PUSH BX MOV AL,CL

MOV CL,04H SHR AL,CL MOV BL,AL MOV BH,0H

MOV AL,CS:[BX+DATA2] POP BX

MOV DS:[BX],AL RET

LEDDISP:MOV AL,90H

MOV DX,CONTPORT OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

MOV AL,CS:[BX+DATA1] MOV DX,DATAPORT OUT DX,AL

ADD BYTE PTR DS:[0600H],01H JNZ LED1 JA LED2

MOV BL,DS:[0600H] MOV BH,0H

LED2: RET CODE ENDS END START

四、实验过程

1、准确连接线路。

2、导入实验程序,观察实验现象,如下图

实验二 、使用 DAC0832 的 D/A 转换实验(一)

一、实验目的

1、熟悉 DAC0832 数模转换器的特性和接口方法,掌握 D/A 输出程序的设计和调试方法。 二、预备知识 1、DAC0832 结构

DAC0832 是用先进的 CMOS/Si-Cr 工艺制成的双列直插式单片 8 位 D/A 转换器。它可以直接和 8088CPU 相接口。它采用二次缓

冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。 而更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。DAC0832 内部结构见图 6-4

三、实验原理

实验原理如图 6-6 所示,由于 DAC0832 有数据锁存器、选片、

读、写控制信号线,故可与8088CPU 总线直接接口。图中是只有一路模拟量输出, 且为单极型电压输出。DAC0832 工作于单缓冲方式,它的 ILE 接+5V,/CS 和/XFER 相接后作为 0832 芯片的片选 0832CS。这样, 对 DAC0832执行一次写操作就把一个数据直接写入 DAC 寄存器、模拟量输出随之而变化。 四、实验代码 (一):

CODE SEGMENT ASSUME CS:CODE DAPORT EQU 0070H

START: MOV DX,DAPORT

MOV AL,00H

DACON1: OUT DX,AL

MOV CX,0400H

DACON2: LOOP DACON2

CODE ENDS END START (二): CODE SEGMENT ASSUME CS:CODE DAPORT EQU 0070H

START: MOV DX,DAPORT

MOV AL,00H NOT AL JMP DACON1

DACON1: OUT DX,AL

INC AL MOV CX,08H

DACON2: LOOP DACON2

JMP DACON1

CODE ENDS END START 四、实验过程

1、准确连接线路。

2、导入实验程序,观察实验现象,如下图

D/A实验(一)

实验三 、使用 DAC0832 的 D/A 转换实验(二) 一、实验目的

进一步掌握数/模转换的基本原理。 二、实验内容

1、 实验原理基本同实验二 2、 实验线路的连接

1)将DAC0832片选信号CS_0832CS插孔和译码输出Y7插孔相连。

2)对模块化机型,该模块中的 +12V连到上面信号源板的电源部分的+12V上,-12V连到上面信号源板的电源部分的-12V上。对一体化机型,这两根线内部已连好。 3 、实验软件编程提示

本实验在DAOUT端输出锯齿波。根据Vou t = -?VRFE×(输入数字量的十进制数)?/256即可知道,只要将数字量0~256(00H~FFH)从0开始逐渐加1递增直至256为止, 不断循环,在DOUT端就会输出连续不断的锯齿波。 三、实验步骤

1、 根据原理图正确连接好实验线路。

2、 运行实验程序

用示波器测量DOUT插孔,应有锯齿波输出。其结果如下图所示:

D/A 实验(二)

实验四、 8255A 可编程并行口实验

一、实验目的

1、掌握并行接口芯片 8255A 和微机接口的连接方法。 2、掌握并行接口芯片 8255A 的工作方式及其编程方法。 二、预备知识 1、8255A 结构

8255A 是可编程并行接口芯片,双列直插式封装,用+5V 单电源供电,内部有 3 个 8 位 I/O 端口:A 口、B 口、C 口;也可以分为各有 12 位的两组:A 和 B组,A 组包含 A 口 8 位和 C 口的高四位,B 组包含 B 口 8 位和 C 口的低 4 位;A 组控制和 B 组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于 8255A 数据总线缓冲器是双向三态 8 位驱动器,因此可以直接和 8088系统数据总线相连。

三、实验原理

如实验原理图 6-13 所示,PC 口 8 位接 8 个开关 K1~ K8,

PB 口 8 位接 8 个发光二极管,从PC口读入 8 位开关量送 PB 口显示。拨动 K1~K8,PB 口上接的 8 个发光二极管 L1~ L8 对应显示 K1~K8 的状态。

6-13 实验原理图

2、实验代码 CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0073H IOCPT EQU 0072H IOBPT EQU 0071H

START: MOV CX,8FFFH DELAY0: LOOP DELAY0

MOV AL,89H

MOV DX,IOCONPT OUT DX,AL NOP

NOP

NOP

IOLED1: MOV DX,IOCPT IN AL,DX MOV DX,IOBPT OUT DX,AL

MOV CX,8FFFH

DELAY: LOOP DELAY JMP IOLED1

CODE ENDS END START

四、实验过程

1、准确连接线路。 2、导入实验程序,观察实验现象,如下图

实验五、8253A 定时/计数器实验

一、实验目的

1、学习 8253A 可编程定时/计数器与 8088CPU 的接口方法。 2、了解 8253A 的工作方式; 掌握 8253A 在各种方式下的编程方法。 二、预备知识

8253A 定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的 16 位减法计数器,分别称为计数器 0、计数器 1、计数器 2。每个计数器计数频率为 0~2MHZ,由于其内部数据总线缓冲器为双向三态,故可直接接在系统数据总线上,通过 CPU 写入计数

初值,也可由 CPU 读出计数当前值;其工作方式通过控制字确定;图中的读写控制逻辑,当选中该芯片时, 根据读写命令及送来的地址信息控制整个芯片工作;图中的控制字寄存器用于接收数据总线缓冲器的信息:当写入控制字时,控制计数器的工作方式,当写入数据时则装入计数初值,控制寄存器为 8 位, 只写不能读。 三、实验原理

本实验原理图如图 6-20 所示,8253A 的 A0、A1 接系统地址总线 A0、A1,故 8253A 有四个端口地址,如端口地址表 6-2 所示。8253A 的片选地址为 48H~ 4FH。 因此, 本实验仪中的8253A 四个端口地址为 48H、49H、4AH、4BH,

分别对应通道 0、通道 1、通道 2 和控制字。采用 8253A 通道 0,工作在方式 3(方波发生器方式),输入时钟 CLK0 为 1MHZ, 输出 OUTO 要求为 1KHZ 的方波,并要求用接在 GATE0 引脚上的导线是接地(“0”电平)或甩空(“1”电平)来观察 GATE 对计数器的控制作用,用示波器观察输出波形。

JNZ DACON1

DACO3: MOV DX,DAPORT

OUT DX,AL MOV CX,0800H

DACO4: LOOP DACO4

INC AL JNZ DACO3 JMP START

CODE ENDS END START 三、实验过程

1、准确连接线路。

2、导入实验程序,观察实验现象,如下图

实验八、使用8251A的串行接口应用实验(一)

一、实验目的

掌握用8251A接口芯片实现微机间的同步和异步通信。

掌握8251A芯片与微机的接口技术和编程方法。

二、预备知识

8251A是一种可编程的同步/异步串行通信接口芯片, 具有独立

的接收器和发送器,能实现单工、 半双工、双工通信。

8251A内部结构框图如图7-1所示。

DB7~0

RESET C/D CLK RD WR CS DSR RTS CST 状态 缓冲器 发送数据 命令缓冲器 接受数据 缓冲器 I/O 缓冲

读/写 控制 逻辑 调制 解调器控制 内部 发送器 发送 控制 接受 控制 接受器

TxD

TxRDY TxE TxC

RxRDY SYNDET/BD RxC RxD

三、实验内容

实验原理图如图7-4所示,8251A的片选地址为050~05F,

8251A的C/D接A0, 因此,8251A的数据口地址为050H,命令/状态口地址是051H,8251A的CLK 接系统时钟的2分频输出PCLK(2.385MHZ),图中接收时钟RXC和发送时钟TXC连在一 起接到8253A的OUT1,8253A的OUT1输出频率不小于79.5KHZ。 本实验采用8251A异步方式发送,波特率为9600,因此8251A发送器时钟输入端TXC输入一个153.6KHZ的时钟(9600×16)。这个时钟就有8253A的 OUT1产生。8253A的CLK1接1.8432MHZ,它的12分频正好是153.6KHZ。故8253A计数器1设置为工作方式3 -方波频率发生,其计数初值为000CH。

本实验发送字符的总长度为10位(1个起始位(0),8个数据位(D0在前),1个停止位(1),发送数据为55H,反复发送,以便用示波器观察发送端TXD的波形。用查询8251A状态字的第0位(TXRDY)来判断1 个数据是否发送完毕, 当TXRDY=1时,发送数据缓冲器空。

四、实验步骤

运行实验程序,用示波器探头测8251的发送脚8TXD上的波形,

以判断起始位、数据位以及停止位的位置。

实验九、8279A可编程键盘显示接口实验

一、实验目的

学习8279A与微机8088系统的接口方法,了解8279A用在译码

扫描和编码扫描方式时的编程方法,以及8088CPU用查询方式和中断方式对8279A进行控制的编程方法。 二、预备知识

8279A是一种通用的可编程键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED自动扫描, 使显示缓冲器的内容在LED上显示出来。 三、实验内容

实验原理如图8-1所示,系统中8279A接口芯片及其相关电路完成键盘扫描和显示,本实验以查询方式获取键盘状态信息,读取键值。键值转换成显示代码供显示。根据原理图8-1,得到键值和键名的对照表8-1,显示值和显示代码对照表8-2。

表8-1 键名 0 1 2 3 4 5 6 7 8 9 A 键值 23H 2 BH 33H 3BH 22H 2AH 32H 键名 B C D E F 键值 39H 20H 28H 30H 38H 表8-2 显示值 显示代码 显示值 显示代码 0 1 2 3 4 3AH 21H 29H 31H 5 6 7 07H F 3FH 06H 5BH 4FH 66H 6DH 7DH 8 9 A B C D E 7FH 6FH 77H 7CH 39H 5EH 79H 71H 四、实验步骤

1、将8279键盘接口显示部分的DU (a-h)用8芯线连接至数码管显示区的DU(a-h),BIT连接至数码管显示区的BIT。KH连键盘区KH ,KL连键盘区的KL。 2、 运行实验程序

在数码管上显示“8279-1”,在小键盘上输入数字键。其实验结果如下图:

实电

一、

1、了解步进电机控制的基本原理。 2、掌握步进电机转动编程方法。

验十、步进机控制

实验目的

二、预备知识

步机电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,用微电脑控制步进电机最适合 三、实验原理

1、硬件原理图如下:

2、实验代码 CODE SEGMENT ASSUME CS:CODE IOBPT EQU 0060H START: JMP IOLED1 IOLED1:MOV DX,IOBPT

MOV AL,03H OUT DX,AL CALL DELAY MOV AL,06H

OUT DX,AL

CALL DELAY MOV AL,0CH OUT DX,AL CALL DELAY MOV AL,09H OUT DX,AL

CALL DELAY

JMP START DELAY: MOV CX,08000H DELA: LOOP DELA RET

CODE ENDS END START 四、实验过程 1、准确连接线路。

2、导入实验程序,观察实验现象,如下图

实验十一 用D/A、A/D实验闭环测试

一、实验目的

1、加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。

2、熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法。 二、实验原理

本实验采用 DAC0832和ADC0809 做数模转换和模数转换闭环测试实验,即将数模转换器输出的模拟量作为模数转换器的模拟量输入,并比较D/A设定的数字量与A/D读出的数字量,从而得出实验结论。由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与 8088CPU 总线直接接口。图中是只有一路模拟量输出, 且为单极型电压输出。DAC0832工作于单缓冲方式,它的ILE接+5V,/CS和/XFER相接后作为0832芯片的片选0832CS。这样, 对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随

之而变化。

进行D/A转换只需如下两条命令:

MOV AL,DATA0 ;DATA0为设定的待要转换的数字量。 OUT DAPORT,AL ;DAPORT为DAC0832的端口地址,数字量送端口。 三、实验线路连接

1)A/D转换器ADC0809的片选信号CS_0809连接译码输出Y6。CLK_0809连T1(1MHZ)

2)A/D转换器0809的通道0输入信号IN0连接D/A转换器DAC0832的输出信DAOUT。

3)Y7连接D/A转换器DAC0832的片选信号CS_0832。

4) 将8279接口模块上的插座DU(JB51)(a-h)用8芯线连接至数码管模块插座DU (a-h),8279接口模块上插座BIT(JB53)连接至数码管模块插座BIT。

5) 8279接口模块上的插孔8279ClK连至上面主板的CLOCK(对58B机型该线不连)。

6)8279接口模块上的插孔8279CS连至上面主板的CS5(对58B机型该线不连)。 四、实验步骤

1)正确理解实验原理。 2)连接好实验线路。

3)运行实验程序,观察运行结果。

五、实验结果

实验结果如图所示,实验成功。

实验十二 用0832和8255实现对直流电机的调速控制

一、实验目的

1、掌握直流电机的驱动原理。 2、了解直流电机调速的方法。

二、实验内容

1、用DAC0832D/A转换电路的输出,经放大后驱动直流电机。 2、编制程序,通过读入8255C口的值,并以此值来改变DAC0832的输出来控制电机转速,并将此值显示在数码管上用以表示电机的速度。

三、实验线路连接

08f8:011c

(先用伪指令DB,输入要传送的源操作数;然后输入数据块传送程序。程序输入完后,最后一行不输入内容,直接按回车,使返回DEBUG。)

3.显示存储单元内容命令d 格式:–d [地址]

–d [范围]

功能:从指定起始地址开始 或 按指定地址范围 或 从当

前地址开始(未指定地址或范围时) 显示存储单元的内容。左边用十六进制数表示每个字节,右边用ASCII字符表示每个字节。若不指定段地址,则缺省为DS段。

例:–d 100(显示DS:100H单元开始的80H个单元的内容。其中前

10H

个数为前面程序的源数据。)

4. 执行程序命令g

格式:–g[=地址1][地址2][...]

a) 功能:执行程序。地址1 指定了执行程序的起始地址,如未指定,

则从当前CS:IP开始执行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器内容及标志位状态,和下一条要执行的指令。控制程序由当前IP处运行,直至指定的断点IP=0123H处,程序暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至000A处:

断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、缓冲区、标志等)来判断程序是否运行正确。 5. 改写存储单元内容命令E 格式:–e 地址

功能:从指定地址开始,逐个单元显示∕改写内容。具体步骤

为:先显示当前单元内容,若要改写则键入新数字,再按“空格”键可接着显示下一个单元的内容。这样,可不断改写相继单元内容,直到用“回车”键结束该命令。

例: –e 100 内容。)

****:0100 00.f 01.e 02.d 03.c 04.b 05.a 06.9 07.8

(改写DS:100H单元开始的,即源数据区的

****:0108 08.7 09.6 0A.5 0B.4 0C.3 0D.2 0E.1 ? 0F.0 –g=110 –d 300 新内容。)

6. 反汇编命令u 格式:–u [地址]

–u [范围]

(再执行一遍程序程序。)

(显示从DS:300H单元开始,即目标数据区的

功能:从指定地址开始 或 在指定地址范围内 或 从当前CS:IP

开始(未指定地址或范围时)进行反汇编。

7. 跟踪命令t

格式一:–t[=地址] 功能:逐条指令跟踪。若未指定地址,则从当前CS:IP开始执行。

格式二:–t[=地址][N] 功能:从指定地址起执行N条指令后停止。若未指定地址,则从当前CS:IP开始执行。

8. 命名文件名命令n 格式:–n 盘文件名

功能: 指定欲读写的盘文件的文件名。 例:–n aaa aaa。)

(在当前盘当前目录下指定盘文件名

9. 存盘命令w

格式:–w 起始地址

功能: 将指定长度和起始地址的信息存入指定的盘文件中。 例:-r cx cx 0000

:001c (将要存盘的程序字节数 1ch 写入寄存器 cx)

-w 0100 (将从地址 CS:0100H 开始的 1ch ?个字节的内容存入文件 aaa 中) Write 001c bytes 10、装载命令L:

用来将被调试程序重新装载进内存中,一般用于程序运行结束后需继续调试程序时,或需从头开始调试程序时。如对TEST.EXE:

11、退出DEBUG命令q 格式:–q

第三部分 汇编实验 汇编实验一

1-1. 从3500H内存单元开始建立0~15共16个数据(建立的数据为00H,01H~09H.0AH~0FH)。并运行之,检查记录结果。

DATAS SEGMENT ORG 3500H

MEM1 DB 16 DUP(?);此处输入数据段代码 DATAS ENDS

STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS

CODES SEGMENT

功能:退出DEBUG,返回DOS。

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX MOV DI,3500H MOV CX,0010H MOV AH,00H SAHF MOV AL,00H A1:MOV [DI],AL INC DI INC AL

LOOP A1;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS END START -U

1732:0000 B8E113 MOV 1732:0003 8ED8 MOV 1732:0005 BF0035 MOV 1732:0008 B91000 MOV AX,13E1 DS,AX DI,3500 CX,0010

1732:000B B400 MOV AH,00 1732:000D 9E SAHF

1732:000E B000 MOV AL,00 1732:0010 8805 MOV [DI],AL 1732:0012 47 INC DI 1732:0013 FEC0 INC AL 1732:0015 E2F9 LOOP 0010 1732:0017 B44C MOV AH,4C 1732:0019 CD21 INT 21 -G=0000 0017

AX=0010 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=3510

DS=131 ES=13D1 SS=13E1 CS=1732 IP=0017 NV UP EI PL NZ AC PO NC

1732:0017 B44C MOV AH,4C -D 13E1:3500

13E1:3500 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F ................

13E1:3510 B8 E1 13 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .......5........

13E1:3520 88 05 47 FE C0 E2 F9 B4-4C CD 21 00 00 00 00

00 ..G.....L.!.....

13E1:3530 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

13E1:3540 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

1-2. 如果建立的数据为BCD码表示的十进制数据(建立的数据

应为00H,01H~09H,10H~15H),应如何修改上述程序. 并运行之,检查记录结果。

DATAS SEGMENT ORG 3500H

MEM1 DB 16 DUP(?);此处输入数据段代码 DATAS ENDS

STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX

MOV DI,3500H MOV CX,0010H MOV AH,00H SAHF MOV AL,00H A1:ADD AL,00H DAA MOV [DI],AL INC DI INC AL

LOOP A1;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS

END START -U

1732:0000 B8E113 MOV 1732:0003 8ED8 MOV 1732:0005 BF0035 MOV 1732:0008 B91000 MOV 1732:000B B400 MOV 1732:000D 9E SAHF

AX,13E1 DS,AX DI,3500 CX,0010 AH,00 1732:000E B000 MOV AL,00 1732:0010 8805 MOV [DI],AL 1732:0012 47 INC DI 1732:0013 FEC0 INC AL 1732:0015 E2F9 LOOP 0010 1732:0017 B44C MOV AH,4C 1732:0019 CD21 INT 21 -G=0000 0017

AX=0010 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=3510

DS=13E1 ES=13D1 SS=13E1 CS=1732 IP=0017 NV UP EI PL NZ AC PO NC

1732:0017 B44C MOV AH,4C -D 13E1:3500

13E1:3500 00 01 02 03 04 05 06 07-08 09 10 11 12 13 14 15 ................

13E1:3510 B8 E1 13 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .......5........

13E1:3520 04 00 27 88 05 47 FE C0-E2 F6 B4 4C CD 21 00 00 ..'..G.....L.!..

13E1:3530 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00

00 ................

13E1:3540 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

1-3.编程完成1+2+3+4+5+6+7+8+9运算。 DATAS SEGMENT ORG 3500H MEM1 DB 9 DUP(?)

DATAS ENDS

STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX MOV MEM1,01H MOV BL,MEM1 MOV AL,00H

MOV CX,9 MOV AH,0 A1:ADD AL,BL ADC AH,0 INC BL LOOP A1

;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS

END START -U

1732:0000 B8E113 1732:0003 8ED8 1732:0005 C606003501 1732:000A 8A1E0035 1732:000E B000 1732:0010 B90900 1732:0013 B400 1732:0015 02C3 1732:0017 80D400 1732:001A FEC3 MOV MOV MOV MOV MOV MOV MOV ADD ADC INC AX,13E1 DS,AX

BYTE PTR [3500],01 BL,[3500] AL,00 CX,0009 AH,00 AL,BL AH,00 BL

1732:001C E2F7 LOOP 0015 1732:001E B44C MOV AH,4C -G=0000 001E

AX=002D BX=000A CX=0000 DX=0000 SP=0000

BP=0000 SI=0000 DI=0000

DS=13E1 ES=13D1 SS=13E1 CS=1732 IP=001E NV UP EI PL NZ NA PE NC

1732:001E B44C MOV AH,4C

1-4.编程完成1+2+3+4+5+6+7+8+~+100运算。

DATAS SEGMENT SUM DW ? DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX MOV AX,0 MOV BX,1

MOV CX,100 A1:ADD AX,BX INC BX DEC CX JNZ A1 MOV SUM,AX MOV AH,4CH INT 21H CODES ENDS END START 实验结果: -U

172A:0000 B8D913 172A:0003 8ED8 172A:0005 C606003501 172A:000A 8A1E0035 172A:000E B000 172A:0010 B96400 172A:0013 B400 172A:0015 02C3 172A:0017 80D400 172A:001A FEC3 MOV MOV MOV MOV MOV MOV MOV ADD ADC INC AX,13D9 DS,AX

BYTE PTR [3500],01 BL,[3500] AL,00 CX,0064 AH,00 AL,BL AH,00 BL

172A:001C E2F7 LOOP 0015 172A:001E A30135 MOV [3501],AX -U

172A:0021 B44C MOV AH,4C 172A:0023 CD21 INT 21 -G=0000 0021

AX=13BA BX=0065 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=13D9 ES=13C9 SS=13D9 CS=172A IP=0021 NV UP EI PL NZ NA PE NC

172A:0021 B44C MOV AH,4C -DDS:3500

13D9:3500 01 BA 13 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

13D9:3510 B8 D9 13 8E D8 C6 06 00-35 01 8A 1E 00 35 B0 00 ........5....5..

13D9:3520 B9 64 00 B4 00 02 C3 80-D4 00 FE C3 E2 F7 A3 01 .d..............

13D9:3530 35 B4 4C CD 21 00 00 00-00 00 00 00 00 00 00 00 5.L.!...........

1-5.将内存3500H单元开始存放的0~9共10个字节数传递到

本文来源:https://www.bwwdw.com/article/hrqa.html

Top