实验1初级程序的编写与调试实验邓鹏飞.docx
- 文档编号:3697013
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:12
- 大小:21.63KB
实验1初级程序的编写与调试实验邓鹏飞.docx
《实验1初级程序的编写与调试实验邓鹏飞.docx》由会员分享,可在线阅读,更多相关《实验1初级程序的编写与调试实验邓鹏飞.docx(12页珍藏版)》请在冰豆网上搜索。
实验1初级程序的编写与调试实验邓鹏飞
南昌大学实验报告
学生姓名:
邓鹏飞学号:
6100410203专业班级:
电III106
实验类型:
■验证□综合□设计□创新实验日期:
2011-11-03实验成绩:
实验1初级程序的编写与调试实验
(一)
一.实验目的
1.熟悉DEBUG命令;学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应该试用一下;
2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;
3.熟悉数据传送指令、算术运算指令、逻辑指令、循环指令的使用。
4.掌握简单的汇编语言程序编写与调试。
二.实验内容
1.内存操作数及各种寻址方式使用;
2.求累加和程序;
3.多字节加法程序;
4.数据串搬家程序;
5.段寄存器概念及字符串传送指令练习。
三.实验要求
1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;
2.阅读数据传送指令、算术运算指令、逻辑指令、循环指令的使用方法
3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、程序段
四.实验环境
PC微机;
DOS操作系统或Windows操作系统;
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。
五.实验步骤
1.内存操作数及各种寻址方式使用
MOVAX,1234
MOV[1000],AX
MOVBX,1002
MOVBYTEPTR[BX],20
MOVDL,39
INCBX
MOV[BX],DL
DECDL
MOVSI,3
MOV[BX+SI],DL
MOV[BX+SI+1],DL
MOVWORDPTR[BX+SI+2],2846
步骤:
(1)用A命令键入上述程序,并用T命令逐条运行。
(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
-a
13BC:
0100movax,1234
13BC:
0103mov[1000],ax
13BC:
0106movbx,1002
13BC:
0109movbyteptr[bx],20
13BC:
010Cmovdl,39
13BC:
010Eincbx
13BC:
010Fmov[bx],dl
13BC:
0111decdl
13BC:
0113movsi,3
13BC:
0116mov[bx+si],dl
13BC:
0118mov[bx+si+1],dl
13BC:
011Bmovwordptr[bx+si+2],2846
-t
AX=1234BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0103NVUPEIPLNZNAPONC
13BC:
0103A30010MOV[1000],AXDS:
1000=0000
-d0100
13BC:
0100B83412A30010BB02-10C60720B2294388.4..........)C.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0106NVUPEIPLNZNAPONC
13BC:
0106BB0210MOVBX,1002
-d0103
13BC:
0100A30010BB02-10C60720B2294388.........)C.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0103NVUPEIPLNZNAPONC
13BC:
0103A30010MOV[1000],AXDS:
1000=0000
-d0106
13BC:
0100BB02-10C60720B2294388......)C.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=1002CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0109NVUPEIPLNZNAPONC
13BC:
0109C60720MOVBYTEPTR[BX],20DS:
1002=00
-d0109
13BC:
0100C60720B2294388...)C.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=1002CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010CNVUPEIPLNZNAPONC
13BC:
010CB239MOVDL,39
-d010c
13BC:
0100B2294388.)C.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=1002CX=0000DX=0039SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010ENVUPEIPLNZNAPONC
13BC:
010E43INCBX
-d010e
13BC:
01004388C.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=1003CX=0000DX=0039SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010FNVUPEIPLNZNAPENC
13BC:
010F8817MOV[BX],DLDS:
1003=00
-d010f
13BC:
010088.
13BC:
011017FECABE03008810-885001C740024628.........P..@.F(
-t
AX=1234BX=1003CX=0000DX=0039SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0111NVUPEIPLNZNAPENC
13BC:
0111FECADECDL
-d0111
13BC:
0110FECABE03008810-885001C740024628........P..@.F(
-t
AX=1234BX=1003CX=0000DX=0038SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0113NVUPEIPLNZNAPONC
13BC:
0113BE0300MOVSI,0003
-d0113
13BC:
0110BE03008810-885001C740024628......P..@.F(
-t
AX=1234BX=1003CX=0000DX=0038SP=FFEEBP=0000SI=0003DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0116NVUPEIPLNZNAPONC
13BC:
01168810MOV[BX+SI],DLDS:
1006=00
-d0116
13BC:
01108810-885001C740024628...P..@.F(
-t
AX=1234BX=1003CX=0000DX=0038SP=FFEEBP=0000SI=0003DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0118NVUPEIPLNZNAPONC
13BC:
0118885001MOV[BX+SI+01],DLDS:
1007=00
-d0118
13BC:
0110885001C740024628.P..@.F(
-t
AX=1234BX=1003CX=0000DX=0038SP=FFEEBP=0000SI=0003DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=011BNVUPEIPLNZNAPONC
13BC:
011BC740024628MOVWORDPTR[BX+SI+02],2846DS:
1008=0000
-d011b
13BC:
0110C740024628.@.F(
2.求累加和程序:
程序:
MOVBX,1000
MOVCX,10
SUBAX,AX
LOP:
ADDAL,[BX]
ADCAH,0
INCBX
J:
LOOPLOP
INT3
步骤:
(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;0108010E
(2)用命令NAA将此程序命名为文件AA(文件名可任取);
(3)用R命令将BX:
CX改为程序长度值(即最后一条指令后面的地址减去开始地址;
(4)用命令W100将此程序存到AA命名的磁盘文件中;
-a
13BC:
0100movbx,1000
13BC:
0103movcx,10
13BC:
0106subax,ax
13BC:
0108addal,[bx]
13BC:
010Aadcah,0
13BC:
010Dincbx
13BC:
010Eloop0108
13BC:
0110int3
13BC:
0111
-nvincent
-rbx
BX0000
:
10
-rcx
CX0000
:
10
-w100
Writing100010bytes
(5)用命令Q退出DEBUG;
(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序;
若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入;
C:
\DOCUME~1\ADMINI~1>debugvincent
Insufficientmemory
-u
13BC:
0100BB0010MOVBX,1000
13BC:
0103B91000MOVCX,0010
13BC:
010629C0SUBAX,AX
13BC:
01080207ADDAL,[BX]
13BC:
010A80D400ADCAH,00
13BC:
010D43INCBX
13BC:
010EE2F8LOOP0108
13BC:
0110CCINT3
13BC:
0111FECADECDL
13BC:
0113BE0300MOVSI,0003
13BC:
01168810MOV[BX+SI],DL
13BC:
0118885001MOV[BX+SI+01],DL
13BC:
011BC73400ABMOVWORDPTR[SI],AB00
13BC:
011F1300ADCAX,[BX+SI]
(7)用E命令在内存地址1000H处键入16个数字;
(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;
-e1000
13BC:
100001.e12.e00.500.700.900.a00.200.e
13BC:
100800.b00.f00.400.800.600.800.700.8
-g=100010e
AX=000EBX=1001CX=0010DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010ENVUPEIPLNZNAPONC
13BC:
010EE2F8LOOP0108
(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;
AX=000EBX=1001CX=0010DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010ENVUPEIPLNZNAPONC
13BC:
010EE2F8LOOP0108
-t
AX=000EBX=1001CX=000FDX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0108NVUPEIPLNZNAPONC
13BC:
01080207ADDAL,[BX]DS:
1001=0E
-t
AX=001CBX=1001CX=000FDX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010ANVUPEIPLNZACPONC
13BC:
010A80D400ADCAH,00
-t
AX=001CBX=1001CX=000FDX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010DNVUPEIPLZRNAPENC
13BC:
010D43INCBX
-t
AX=001CBX=1002CX=000FDX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010ENVUPEIPLNZNAPONC
13BC:
010EE2F8LOOP0108
(10)重复G、J与T,再检查AX是否正确;
(11)用G命令使程序运行到结束,检查AX值是否正确。
-g=1000110
AX=008EBX=1010CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0110NVUPEIPLNZACPONC
13BC:
0110CCINT3
3.多字节加法程序
程序:
MOVDI,1000
MOVCX,8
MOVSI,2000
CLC
LOP:
MOVAL,[SI]
ADC[DI],AL
INCSI
INCDI
LOOPLOP
INT20
步骤:
(1)用命令键入此程序lop010A
13BC:
0100movdi,1000
13BC:
0103movcx,8
13BC:
0106movsi,2000
13BC:
0109clc
13BC:
010Amoval,[si]
13BC:
010Casc[di],al
^Error
13BC:
010Cadcal,[di]
13BC:
010Eincsi
13BC:
010Fincdi
13BC:
0110loop010a
13BC:
0112int20
(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
-e100
13BC:
010055.4555.4545.4545.54
-e200
13BC:
020000.6500.6500.8500.48
-g
Programterminatednormally
-d100
13BC:
0100454545545500BE00-20F88A0412054647EEETU........FG
13BC:
0110E2F8CD2003008810-885001C73400AB13........P..4...
4.数据串搬家程序
(1)用A命令键入下列程序:
MOVSI,1000
MOVDI,1500
MOVCX,0FH
LOP:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
DECCX
JNZLOP
INT20
-a
13BC:
0100movsi,1000
13BC:
0103movdi,1500
13BC:
0106movcx,0f
13BC:
0109moval,[si]
13BC:
010Bmov[di],al
13BC:
010Dincsi
13BC:
010Eincdi
13BC:
010Fdeccx
13BC:
0110jnz0109
13BC:
0112int20
(2)用A命令DB伪指令在1000H键入下列字符串:
‘IBM_PCCOMPUTER'
-a1000
13BC:
1000db'IBM_PCCOMPUTER'
(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。
-d1500
13BC:
150049424D5F50432043-4F4D505554455200IBM_PCCOMPUTER.
13BC:
15100000000000000000-0000000000000000................
13BC:
15200000000000000000-0000000000000000................
13BC:
15300000000000000000-0000000000000000................
13BC:
15400000000000000000-0000000000000000................
结果一致
5.自编程序
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。
-a
13BC:
0100movax,4560
13BC:
0103movcx,1230
13BC:
0106movbx,1478
13BC:
0109movdx,2589
13BC:
010Csubcx,dx
13BC:
010Esbbax,bx
13BC:
0110int20
-t
AX=4560BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0103NVUPEIPLNZNAPONC
13BC:
0103B93012MOVCX,1230
-t
AX=4560BX=0000CX=1230DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0106NVUPEIPLNZNAPONC
13BC:
0106BB7814MOVBX,1478
-t
AX=4560BX=1478CX=1230DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=0109NVUPEIPLNZNAPONC
13BC:
0109BA8925MOVDX,2589
-t
AX=4560BX=1478CX=1230DX=2589SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010CNVUPEIPLNZNAPONC
13BC:
010C29D1SUBCX,DX
-t
AX=4560BX=1478CX=ECA7DX=2589SP=FFEEBP=0000SI=0000DI=0000
DS=13BCES=13BCSS=13BCCS=13BCIP=010ENVUPEINGNZACPOCY
13BC:
010E19D8SBBAX,BX
六.实验报告要求
1.各项实验记录,可以用截图或文字进行说明。
2.要求你修改的程序的清单(修改后)和调试记录,源程序请添加适当的注释。
3.自编程序原稿及调试后修正稿,写出原稿错在那里。
七.简答题
1.MOVBYTEPTR[BX],20
MOVWORDPTR[BX+SI+2],2846
上述指令中BYTEPTR及WORDPTR伪操作不加行不行?
试一试。
2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?
),是否正确?
3.将多字节加法程序中的INT20H指令改为INT3,有何区别?
若这条指令不加,行不行?
试一试。
4.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验1 初级程序的编写与调试实验邓鹏飞 实验 初级 程序 编写 调试 邓鹏飞