LESS: NEXT: CODE
MOV INC LOOP NOP MOV INT ENDS END
MIN, AL BX LAST AH, 4CH 21H
START ;小数->MIN
;实验时程序执行到此,通过D命令查看数据段结果
2. 代码转换实验
从键盘输入2个十进制数组合成压缩BCD码存入DL,再将压缩BCD码转换成ASCII码送CRT显示。 源程序: CODE SEGMENT ASSUME CS:CODE ST: MOV AH, 01H ;键盘输入并回显,AL=输入字符 INT 21H MOV CL, 4 SHL AL, CL MOV DL, AL MOV AH, 01H INT 21H AND AL, 0FH OR DL, AL MOV BL, DL ;保护DL原值 SHR DL, CL OR DL, 30H MOV AH, 02H ;显示十位数,DL=输出字符 INT 21H MOV DL, BL AND DL, 0FH OR DL, 30H MOV AH, 02H ;显示个位数 INT 21H MOV AH, 4CH INT 21H CODE ENDS END ST
要求先编写汇编文件,运用MASM.EXE、LINK.EXE汇编链接运用DEBUG或EMU8086采用单步调试的方法进行运行调试,任意输入两个数字,验证实验结果。
六、实验报告
实验报告要求参考附录一。
6
实验三 顺序结构程序设计
一、实验目的和要求
1. 熟悉星研集成环境软件的使用方法。熟悉Borland公司的TASM编译器; 2. 熟悉8086汇编指令,能自己编写简单的程序,并调试运行验证结果。
二、实验任务
学习使用星研集成环境软件,验证及编写调试实验内容的程序。
三、实验设备和软件
星研集成环境软件(参考附录四)
四、预习内容和要求
1. 预习附录四星研集成环境软件,熟悉星研集成环境软件的使用。 2. 复习顺序结构程序的设计方法,预习实验内容。
五、实验内容
1. 编写简单程序,用数据运算指令,对两个16位数做加法运算。这两个数从地址10050H开始连续存放,低位在低地址一端,结果放在这两个数之后。
实验框图:
开始 初始化 段地址DS:0000H , 被加数指针SI←50H 加数指针DI←52H ,和的指针BX←54H 段地址DS:0000H , 被加数指针SI←50H 清除AX和CF 被加数→AX 被加数+加数→AX AX→(00054)和(00050)单元 暂停
程序清单: CODE BG:
SEGMENT ASSUME MOV MOV MOV MOV
CS:CODE AX,0000H DS,AX SI,50H DI, 52H
7
MOV BX, 54H CLC
XOR AX, AX MOV AX, [SI] ADC AX, [DI] MOV [BX], AX HLT CODE ENDS END BG
2. 编写简单程序,实现组合BCD码转换成ASCII码送CRT显示。
程序清单: CODE SEGMENT ASSUME CS:CODE BEGIN: MOV AL,27H ;27的BCD码,先显示高位。 MOV DL, AL MOV CL, 4 SHR DL, CL OR DL, 30H MOV AH, 2 INT 21H ;显示'2' MOV DL, AL AND DL, 0FH OR DL, 30H MOV AH, 2 INT 21H ;显示'7' MOV AH, 4CH INT 21H CODE ENDS END BEGIN
3. 试用已学过的指令编程,运算以下算式: ⑴、5555H + 6666H + 8756H ⑵、5678 +(-1234)- 4321
4. 已知BX=12ABH,试编程将其内容转换成ASCII码送到数据段0100H单元开始存放。
六、实验报告
实验报告要求参考附录一。
8
实验四 分支结构程序设计
一、实验目的和要求
1. 学习分支结构程序的设计和调试方法;
2. 熟悉8086汇编指令中的程序控制指令的应用。
二、实验任务
学习使用星研集成环境软件,验证及编写、调试实验内容。
三、实验设备和软件
星研集成环境软件(参考附录四)
四、预习内容和要求
1. 熟悉星研集成环境软件的使用。
2. 复习分支结构程序的设计方法,预习实验内容。
五、实验内容
1. 已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。
题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。8086/8088指令系统中有专门的求相反数的指令NEG。 实验框图:
开 始 初始化 将X中的内容取到AL中 AL≥0? Y N 将AL中的内容求补 AL中的内容送RESULT单元 结束
; 初始化 ;X取到AL中
程序清单: DATA X
RESULT DATA CODE
START:
SEGMENT DB DB ENDS SEGMENT ASSUME MOV MOV MOV -25 ?
CS:CODE, DS:DATA AX,DATA DS, AX AL, X
9
TEST AL, 80H ;测试AL正负 JZ NEXT ;为正,转NEXT
NEG AL
否则AL求补 NEXT: MOV RESULT, AL ;送结果 MOV AH, 4CH
INT 21H ;返回DOS CODE ENDS
END START
;汇编结束
2. 编写计算下面函数值的程序: 1 X>0
Y= 0 X=0 -1 X<0
设输入数据为X、输出数据Y,且皆为字节变量。
3. 试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数分别在三个字变量X、Y、Z中存储。
六、实验报告
实验报告要求参考附录一。
10