汇编语言程序设计.doc
《汇编语言程序设计.doc》由会员分享,可在线阅读,更多相关《汇编语言程序设计.doc(5页珍藏版)》请在冰点文库上搜索。
实验四程序设计
一、实验目的
学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。
二、实验题
1、已知当前数据段中DADT1和DADT2开始分别存放若干字节数据,数据个数相同,编制程序检查两数据块中数据是否相同,若相同,则在屏幕上显示1,否则显示0。
【参考程序如下】
DSEGSEGMENT
DATA1DB'ABCDEFG3'
DATA2DB'ABCDEF3G'
CNTDW8
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
START:
MOVAX,DSEG
MOVDS,AX
MOVDL,31H
LEASI,DATA1
LEADI,DATA2
MOVCX,CNT
DECSI
DECDI
AGAIN:
INCSI
INCDI
MOVAL,[SI]
CMPAL,[DI]
LOOPZAGAIN
JZDISP
DECDL
DISP:
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CSEGENDS
ENDSTART
阅读程序,理解循环程序结构及执行过程,并改成串指令实现。
2编写程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
三、实验报告
写出程序清单,记录运行结果。
改写串指令实现:
DSEGSEGMENT
DATA1DB'ABCDEFG3'
DATA2DB'ABCDEF3G'
CNTDW8
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
START:
MOVAX,DSEG
MOVDS,AX
MOVES,AX
MOVDL,31H
LEASI,DATA1
LEADI,DATA2
MOVCX,CNT
CLD
REPZCMPSB
JZDISP
DECDL
DISP:
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CSEGENDS
ENDSTART
运行结果:
当把DATA2改为’ABCDEFG3’后,运行结果为
2.编写程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
代码:
STACKSSEGMENTSTACK
;此处输入堆栈段代码
DW32DUP(?
)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,SS:
STACKS
START:
PUSHDS
XORAX,AX
MOVDS,AX
MOVSI,3000H
MOVCX,16
AA1:
MOV[SI],AL
INCSI
INCAL
LOOPAA1
;此处输入代码段代码
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
调试结果: