实验四程序设计
一、实验目的
学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG 中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。
二、实验题
1、已知当前数据段中DADT1和DADT2开始分别存放若干字节数据,数据个数相同,编制程序检查两数据块中数据是否相同,若相同,则在屏幕上显示1,否则显示0。
【参考程序如下】
DSEG SEGMENT
DATA1 DB 'ABCDEFG3'
DATA2 DB 'ABCDEF3G'
CNT DW 8
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
MOV DS,AX
MOV DL,31H
LEA SI,DATA1
LEA DI,DATA2
MOV CX,CNT
DEC SI
DEC DI
AGAIN:INC SI
INC DI
MOV AL,[SI]
CMP AL,[DI]
LOOPZ AGAIN
JZ DISP
DEC DL
DISP: MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
阅读程序,理解循环程序结构及执行过程,并改成串指令实现。
2 编写程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
三、实验报告
写出程序清单,记录运行结果。
改写串指令实现:
DSEG SEGMENT
DATA1 DB'ABCDEFG3'
DATA2 DB'ABCDEF3G'
CNT DW8
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV DL,31H
LEA SI,DATA1
LEA DI,DATA2
MOV CX,CNT
CLD
REPZ CMPSB
JZ DISP
DEC DL
DISP: MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
运行结果:
当把DATA2改为’ABCDEFG3’后,运行结果为
2.编写程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
代码:
STACKS SEGMENT STACK
;此处输入堆栈段代码
DW 32 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,SS:STACKS
START:PUSH DS
XOR AX,AX
MOV DS,AX
MOV SI,3000H
MOV CX,16
AA1:MOV [SI],AL
INC SI
INC AL
LOOP AA1
;此处输入代码段代码
MOV AH,4CH
INT 21H CODES ENDS
END START
调试结果:。