预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

练习一系统认识实验DW32DUP(?) 实验内容:SSTACKENDS 编写实验程序,将00H~0FH共16个数写入CODESEGMENT 内存3000H开始的连续16个存储单元中。ASSUMECS:CODE,SS:SSTACK 实验步骤:START:PUSHDS 1.运行Wmd86软件,进入Wmd86集成开发环境。XORAX,AX 2.根据程序设计使用语言的不同,通过在“设置”MOVDS,AX 下拉列表来选择需要使用的语言及寄存器类型,这里MOVSI,3000H;建立数据起始地址 选择汇编语言和位寄存器如图1所示。语MOVCX,16;循环次数 言及寄存器类型选择后,下次再启动软件将保持这次的修改不变。AA1:MOV[SI],AL 3.语言选择后,点击新建或按Ctrl+N组合键来新INCSI;地址自加1 建一个文档,如图2所示。默认文件名为Wmd861INCAL;数据自加1 4.编写实验程序,如图3所示,并保存,此LOOPAA1 时系统会提示输入新的文件名,输完后点击保存。MOVAX,4C00H 5.点击,编译文件,若程序编译无误,再点击INT21H;程序终止 进行链接,链接无误输出如图4所示的输出信息。CODEENDS 6.连接PC与实验系统的通讯电缆,打开实验系统电源。ENDSTART 7.编译、链接都正确并且上下位机通讯成功后,练习2 就可以下载程序,联机调试了。可以通过端口列表中的“移位 端口测试”来检查通讯是否正常。点击下载程序。为编datasegment 译、链接、下载组合按钮,通过该按钮可以将编译、链接、下da1db23h,98h,0d2h,00h,95h,7fh,0a6h,49h 载一次完成。下载成功后,在输出区的结果窗中会显示“加载成da2db8dup(0) 功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背dataends 景。如图5所示。codesegment 8.将输出区切换到调试窗口,使用D0000:3000命令查看内assumecs:code,ds:data 存3000H起始地址的数据,如图6所示。存储器在初始状态时,默start:movax,data 认数据为CC。movds,ax movsi,offsetda1 9.点击按钮运行程序,待程序运行停止,观察程 leadi,da2 序运行结果,仍使用命令D0000:3000来观察数据变化。如图7所示。movcx,8 lp:moval,[si] 10.也可以通过设置断点,断点显示如图8所示 mov[di],al ,然后运行程序,当遇到断点时程序会停下来,然后观察数据。incsi 可以使用E0000:3000来改变该地址单元的数据,如图9所示,输入incdi 11后,按“空格”键,可以接着输入第二个数,如22,结束输入按looplp “回车”键。movah,4ch 参考程序:请参照随机软件中的。int21h 操作练习:codeends 编写程序,将内存3500H单元开始的8个数据复制到3600H单元开endstart 始的试验38数字累加和 数据区中。通过调试验证程序功能,使用E命令修改3500H单元开datasegment 始的da1db23h,98h,0d2h,00h,95h,7fh,0a6h,49h 数据,运行程序后使用D命令查看3600H单元开始的数据。sumdw? SSTACKSEGMENTSTACK;定义堆栈段dataends codesegmentdb09h,0eeh,00h,45h,98h,80h,35h,0dah assumecs:code,ds:datamaxdb? start:movax,datamindb? movds,axdataends movsi,offsetda1codesegment movax,0assumecs:code,ds:data movcx,8start:movax,data lp:addal,[si]movds,ax adcah,0movsi,offsetda1 incsimoval,[si] looplpmovbl,al movsum,axincsi movbx,axmovcx,15 movah,4chlp:cmpal,[si] int21hjaenextl codeendsmoval,[si] endstartjmpnext 4。比较数的最大最小nextl:cmpbl,[si] datasegmentjbenext da1db23h,98h,0d2h,00h,95h,7fh,0a6h,49hmovbl,[si] db09h,0eeh,00h,45h,98h,80h,35h,0dahnext:incsi maxdb?looplp mindb?movdh,al dataendsmovdl,bl c