一、实验目的
-
掌握在 PC 机上以十六进制形式显示数据的方法。
-
掌握部分 DOS 功能调用使用方法。
-
熟悉集成软件调试环境。
二、设备以及设备使用
-
上位机:A86集成环境软件
-
下位机:危机接口设备80486DX(实验箱编号:1808134)
三、实验内容
-
DOS 功能调用
指汇编程序通过 INT 21H 软中断来调用 DOS 内部子程序完成特定的一系列操作的一种方法。 -
调用方法
调用前将功能号送 AH 寄存器,同时根据功能号规定的要求准备好所有的参数,然后执行 INT 21H
本实验显示第一行“hello world-1〞 第二行品示 “hello world-2"
(1) 显示单个字符输出
入口:AH=02H
调用参数:DL=输出字符
(2) 显示字符串
入口:AH=O9H
调用参数:DS:DX=串地址,“$’为结束字符
(3)返回DOS 系统
入口:AH=4CH
调用参数:AL=返回码
使用功能号为02和09来进行字符串的输出
代码表示如下
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Author:
;coment: Hello,World;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
• model small
• 486
assume CS: code, SS: stack, DS: data ;段寄存器说明,依次为代码段、堆栈段、数据段
data segment ;数据段定义开始
NUMBER DB 'hello, world!-1',0AH, 0DH ;被显示的字符串,0AH和0DH依次为回车和换行,保证输出为两行
NUMBER1 DB 'hello, world!-2',0AH, 0DH,'$' ;被显示的字符串,$是字符串结束的标志,因为对应功能号09输出的是字符串
data ends ;数据段定义结束
stack segment ;堆栈段定义开始
DB 40 DUP (0)
stack ENDS ;堆栈段定义结束
code segment
start: ;代码段定义开始
MOV AX, data ;将data存入DS中
MOV DS, AX
LEA BX, NUMBER ;将NUMBER的偏移地址存入BX中
MOV CX, 16 ;设置数据段的开始地址,即需要循环的次数。使用循环操作是因为AH为02只能进行单个字符的输出
re:
MOV DL, [BX] ;[]:取对应地址表示的内容,即NUMBER中的字符
MOV AH,2
INT 21H
INC BX ;INC表示将偏移地址BX+1
LOOP re ;loop表示进行循环操作
mov DX, OFFSET NUMBER1 ;OFFSET取NUMBER1的偏移地址
MOV AH, 09H
INT 21H
;MOV AH, 1 ;用户输入按键后运行结束
;INT 21H
mov cx, 0000hloop $ ;延迟操作
MOV AH, 4CH
INT 21H ;返回dos
code ends ;代码段结束
end start ;源程序结束
四、实验步骤
-
安装USB驱动
-
打开集成开发环境
-
找到该实验的路径,打开工程文件
-
点击,左下角会显示构建成功
-
点击调试:启动调试-继续
-
观察左下角输出:应该为两行分别是字符串
hello,world!-1
hello,world!-2
-
更为详细的步骤如下
-
(1)运行软件,根据实验内容的描述,编写实验程序
在已有实验程序的情况下选择:打开一工程一helloworld(文件目录)一.project
(2)双击"helloworld"(文件名),屏幕显示源文件内容。使用“生成”菜单中“构建或重新构建〞选项,对实验程序进行汇编、连接。
(3)选“启动调试",在状态栏显示程序编译、连接、传送整个过程的相关信息,汇编、连接、传送无误的话光标移至源文件中的START(程序的开始位置)
(4)在“调试〞菜单中点击“开始调试”。进入调试环境,根据自己的要求选择调试操作,观察调试过程中,指令执行情况,包括各寄存器及数据区内容的变化。我们选择“继续”操作,就是连续的运行程序。
(5)更改数据区中的数据,考察程序的正确性
五、实验结论与总结
- dos功能调用的功能号存放在AH寄存器中;2号功能要显示的字符存放在DL寄存器中;使用9号功能时字符串的偏移地址存放在DX寄存器中,段地址默认由DS寄存器制定,且字符串必须由$符号结尾。
- 通过使用2号功能和9号功能来进行字符和字符串的输出,如果用2号功能进行字符串的输出需要使用循环。