LOOP LOP INT 20
2)用A命令在1000H处键入下列ASCII码并用D命令检查之:
DB `0 1 2 3 4 5 6 7 8 9 A B C D E F'
用D命令检查时注意左边的ASCII码值和右边的字符。 3)用R命令给DX送一个四位的16进制数(例7F8E)。
4)用T命令逐条运行这程序到LOOP指令处,观察并记录每次运行结果,特别是SP和堆栈内容(用D命令检查)
5)用G命令将此程序运行到结束,并用D命令检查2000H处所转换的结果。可注意屏幕右边的ASCII字符与DX是否一致。 3.验证:数据串搬家程序: 1)用A命令键入下列程序:
MOV SI,1000 MOV DI,1500 MOV CX,0F LOP: MOV AL,[SI]
MOV [DI],AL INC SI INC DI LOOP LOP
INT 20
2)用A命令DB伪指令在1000H键入下列字符串:
‘IBM_PC COMPUTER'
3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。
4.段寄存器概念及字符串传送指令练习:
1)用A命令键入下列程序:
MOV SI,0 MOV DI,0 MOV AX,1000
20
MOV DS,AX MOV AX,1500 MOV ES,AX MOV CX,0F CLD REP MOVSB INT 20
2)用A命令DB伪指令在1000:0000处键入字符串'IBM_PC COMPUTER',
并用D命检查之
3)用D命令检查0F00:1000处内容,看是否一样。为什么? 4)用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS
与ES值。
三、实验任务
1、把实验准备(二)程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的 字符串搬到1002H开始的地方去?
2、修改实验准备(二)程序以做到把1000H开始的字符串搬到1002H
开始的地方去
3、编一程序段,求双字(DX,AX)的绝对值 4、将双字(DX,AX)左移4 位。
四、实验报告要求
1、各项实验记录和思考题。
2、要求给出任务2中要求编写的程序的清单(修改后)和调试记录。 3、给出任务3,4的程序清单和调试记录
21
实验四 汇编语言上机过程及屏幕字符显示程序
一、实验目的:
1、熟练掌握汇编语言的程序格式,程序设计方法;学会使用masm6.11
对源程序进行编译、链接、调试和运行
2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。
3、利用^Break退出程序的方法及局限性。 4、汇编程序的编写
二、实验准备:
1.编写实验任务要求的两个程序,画出流程图,给出程序清单
2.学习汇编语言程序的上机过程
(1)建立汇编语言程序源文件。可使用任何一个文本编辑器(如
EDIT.com)编辑源文件,源文件,源文件的扩展名通常取为.asm。
图4.1 用EDIT编辑源文件
图4.2 EDIT环境下建立的文件 (2)汇编文件,形成目标模块。
22
MASM LT301A。ASM
若文件有语法错误,据错误提示,返回(1),修改源文件。
图4.3 MASM LT301a.asm 执行结果 可以看出文件有错,返回(1),根据提示修改源文件11行,重新编译
图4.4 MASM 编译成功
编译成功。则形成.OBJ目标文件
图4.5在目录下看到的目标文件 (3)连接目标模块,形成可执行文件。 LINK LT301A。OBJ
23
图4.6 LINK LT301a.obj 命令执行结果
若有错,据错误提示,返回(1),修改错误。 若无错,则形成.EXE可执行文件和.MAP映像文件。
(4) DOS下直接键入可执行文件名,即可执行该程序。
LT301A.EXE
图4.7 运行结果
(5) 如果运行结果不对,需调试程序,查找原因。返回步骤(1)
查看源文件,查找错误,修改文件。若无法通过查看源文件
找出错误,可在DEBUG下调试.EXE文件,找出错误之处,再返回步骤(1)。
3. 利用INT 21 09H号功能调用显示字符串。验证以下程序
1) 用A命令在100H处键入下列程序:
MOV AH, 9 MOV DX,110 INT 21 INT 20
2) 用A命令在110H处键入下列字符串的ASCII码:
DB
'This is a sample!$'
3) 用N命令和W命令将此程序(包括数据区)存入文件名为AA.COM的
磁盘文件中。(存入前BX:CX必须置为文件长度值)。 4) 用Q命令退出DEBUG。
5) 在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG检查程序有无错误。
24