汇编语言实验(2)

2019-08-03 14:54

实验一 显示程序实验

一、实验目的

(1) 掌握在PC 机上以十六进制形式显示数据的方法。 (2) 掌握部分DOS 功能调用使用方法。 (3) 熟悉DVCC32JHP集成软件调试环境。

二、实验内容及说明

一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的字符以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS 功能调用(INT 21H)。本实验显示第一行“Show a as hex:”,第二行“××”,××是字符“a”的十进制数(61)。 (1) 显示单个字符输出 入口:AH=02H

调用参数:DL=输出字符 (2) 显示字符串

入口:AH=09H

调用参数:DS:DX= 串地址,’$’为结束字符 (3) 键盘输入并回显 入口:AH=01H

返回参数:AL=输出字符 (4) 返回DOS 系统 入口:AH=4CH

调用参数:AL=返回码

三、实验步骤

(1) 运行DVCC32JHP软件,选择编辑Edit 菜单,根据实验内容的描述编写实验程序或选择Open菜单打开程序。

(2) 使用“ASM编译”菜单中“编译+连接+运行”选项,对实验程序进行汇编、连接。汇编、连接无误的话,就直接运行程序。观察运行结果。

(3) 或使用动态调试,进入调试环境,观察调试过程中,指令执行情况,包括各寄存器及数据区内容的变化等。

(4) 更改数据区中的数据,考察程序的正确性。

四、参考流程图

- 6 -

开始 取字节的高4位

N 数据是否>=A?

是A-F,加7H

送屏幕显示

取字节的低4位

N 数据是否>=A?

Y 是A-F,加7H

转换成ASCII码

送屏幕显示

图1-1 显示程序实验流程图

转换成ASCII码 Y 五、参考程序

参考实验程序文件名DVA1.ASM(在文件夹“ASM_汇编例程”中) 实验程序清单如下:

STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

- 7 -

DATA SEGMENT USE16

MES DB 'Show a as hex:',0AH,0DH,'$' SD DB 'a' DATA ENDS

CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV DX,OFFSET MES MOV AH,09H INT 21H MOV SI,OFFSET SD MOV AL,DS:[SI] AND AL,0F0H SHR AL,4

CMP AL,0AH

JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H

MOV AL,DS:[SI] AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H

MOV DL,AL MOV AH,02H INT 21H

START0: MOV AH,06H MOV DL,0FFH INT 21H

JE START0 MOV AX,4C00H

INT 21H CODE ENDS END START

- 8 -

实验二 数据传送实验

一、实验目的

(1) 熟悉DVCC32JHP 调试运行环境。 (2) 掌握与数据有关的不同寻址方式。

二、实验内容

本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上显示。

三、实验步骤

(1) 运行DVCC32JHP软件,选择编辑Edit 菜单编写实验程序或选择Open菜单打开程序。 (2) 使用“ASM编译”菜单中“编译+连接+运行”选项,对实验程序进行汇编、连接。汇编、连接无误的话,就直接运行程序。观察运行结果。

(3) 或使用动态调试,进入调试环境,观察调试过程中,指令执行情况,包括各寄存器及数据区内容的变化等。

(4) 更改数据区中的数据,考察程序的正确性。

四、参考程序

参考实验程序文件名DVA2.ASM(在文件夹“ASM_汇编例程”中) 实验程序清单如下:

DDATA SEGMENT MSR DB \ LEN EQU $- MSR DDATA ENDS

EXDA SEGMENT

;定义源数据段

;定义附加数据段

MSD DB LEN DUP(?) EXDA ENDS

MYSTACK SEGMENT STACK ;定义堆栈段 DW 20 DUP(?) MYSTACK ENDS

CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DDATA,ES:EXDA START: MOV AX,DDATA

- 9 -

MOV DS,AX ;装载数据段寄存器

MOV AX,EXDA

MOV ES,AX ;装载附加数据段寄存器 MOV SI,OFFSET MSR ;设置SI MOV DI,OFFSET MSD ;设置DI MOV CX,LEN

NEXT: MOV AL,[SI] ;开始传输数据

MOV ES:[DI],AL

INC SI

INC DI DEC CX JNZ NEXT PUSH ES

POP DS ;将附加段寄存器指向的段值赋给数据段寄存器 MOV DX,OFFSET MSD MOV AH,9 INT 21H

START0: MOV AH,06H ;判断是否有键按下 MOV DL,0FFH INT 21H

JE START0 ;若没有转START0

MOV AX,4C00H ;有键返回DOS INT 21H

CODE ENDS END START

如果将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示: MOV BX,0 MOV CX,LEN NEXT: MOV AL,MSR[BX] MOV ES:MSD[BX],AL INC BX LOOP NEXT

- 10 -


汇编语言实验(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:某发电厂二氧化碳捕集及利用建设项目可行性研究报告

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

马上注册会员

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