实验三报告.docx
- 文档编号:28966605
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:18.64KB
实验三报告.docx
《实验三报告.docx》由会员分享,可在线阅读,更多相关《实验三报告.docx(20页珍藏版)》请在冰豆网上搜索。
实验三报告
实验三
一.实验目的:
(1)掌握常用的DOS输入输出系统功能调用。
(2)学习逻辑运算指令的用法。
二.实验内容:
(1)输入X的值,编程求多项式Y=2X*X*X*X+3X*X*X+5X*X+8X+6=(((2X+3)X+5)X+8)X+6)的值。
(2)已知字符串“aBCEFghi15OXyZ”以0DH作为结束标志,编程从头搜索字符串的结束标志符,统计搜索的字符个数(要求输出字符个数)。
(3)从键盘读入一个小写字母,输出字母表中倒数与改字母序号相同的那个字母,如:
输入“a”,则输出“z”.
1、编译:
c:
\masm.asm
2、链接:
c:
\link.obj
3、调试:
c:
\debug.exe
4、运行:
c:
\.exe
(1)1、编译:
C:
\masm3-1.asm
C:
\Users\Administrator>cdC:
\masm
C:
\masm>masm3-1
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[3-3.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
50352+415152Bytessymbolspacefree
0WarningErrors
0SevereErrors
2、链接:
c:
\link3-1.obj
C:
\masm>link3-1
Microsoft(R)OverlayLinkerVersion3.65
Copyright(C)MicrosoftCorp1983-1988.Allrightsreserved.
RunFile[3-3.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
LINK:
warningL4021:
nostacksegment
3、调试:
c:
\debug3-1.exe
1)、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:
内存地址指令代码反汇编的程序代码
C:
\masm>debug3-1.exe
-u
1430:
0000B82E14MOVAX,142E数据段的首地址是:
142E代码段的首地址是:
1430
1430:
00038ED8MOVDS,AX
1430:
0005BA0000MOVDX,0000
1430:
0008B409MOVAH,09
1430:
000ACD21INT21
1430:
000CB401MOVAH,01
1430:
000ECD21INT21
1430:
0010240FANDAL,0F
1430:
0012A21000MOV[0010],AL
1430:
0015B80200MOVAX,0002
1430:
00188A1E1000MOVBL,[0010]
1430:
001CB700MOVBH,00
1430:
001EF7E3MULBX
-
2)、从上一步结果中找到数据段的首地址142E,查看里面存储的数据,数据段从首地址142E中存储了:
pleaseinputX:
$
-d142E:
0000
142E:
0000706C656173652069-6E70757420583A24pleaseinputX:
$
142E:
00100000000000000000-0000000000000000................
142E:
0020B82E148ED8BA0000-B409CD21B401CD21...........!
...!
142E:
0030240FA21000B80200-8A1E1000B700F7E3$...............
142E:
0040050300F7E3050500-F7E3050800F7E305................
142E:
00500600A31100B44CCD-21720B8A5DFF2AFF......L.!
r..].*.
142E:
006038A7BA42751D8A05-3846067426EB2D908..Bu...8F.t&.-.
142E:
007046807CFF80720D46-8A5CFF2AFF38BFBAF.|..r.F.\.*.8..
-3)、从反汇编地址中找到把数据段的首地址142E传给寄存器AX的指令地址:
0005,用G命令执行到地址0005
-g0005
AX=142EBX=0000CX=0059DX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=1430IP=0005NVUPEIPLNZNAPONC
1430:
0005BA0000MOVDX,0000
-然后用T命令单步执行,看寄存器AX,DS,ES的内容的变化
-t
AX=142EBX=0000CX=0059DX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=1430IP=0008NVUPEIPLNZNAPONC
1430:
0008B409MOVAH,09
-t
AX=092EBX=0000CX=0059DX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=1430IP=000ANVUPEIPLNZNAPONC
1430:
000ACD21INT21
-t
AX=092EBX=0000CX=0059DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=00A7IP=107CNVUPDIPLNZNAPONC
00A7:
107C90NOP
-t
AX=092EBX=0000CX=0059DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=00A7IP=107DNVUPDIPLNZNAPONC
00A7:
107D90NOP
-t
AX=092EBX=0000CX=0059DX=0000SP=FFFABP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=00A7IP=107ENVUPDIPLNZNAPONC
00A7:
107EE8E000CALL1161
-t
AX=092EBX=0000CX=0059DX=0000SP=FFF8BP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=00A7IP=1161NVUPDIPLNZNAPONC
00A7:
11611EPUSHDS
4)然后直接G命令运行完毕。
-g
pleaseinputX:
1输入X=1
Programterminatednormally
4、运行3-1.exe,完全执行程序,最后再查看数据段最后的结果:
-d142E:
0000
142E:
0000706C656173652069-6E70757420583A24pleaseinputX:
$
142E:
00100118000000000000-0000000000000000................
142E:
0020B82E148ED8BA0000-B409CD21B401CD21...........!
...!
142E:
0030240FA21000B80200-8A1E1000B700F7E3$...............
142E:
0040050300F7E3050500-F7E3050800F7E305................
142E:
00500600A31100B44CCD-21720B8A5DFF2AFF......L.!
r..].*.
142E:
006038A7BA42751D8A05-3846067426EB2D908..Bu...8F.t&.-.
142E:
007046807CFF80720D46-8A5CFF2AFF38BFBAF.|..r.F.\.*.8..
--Q
(2)1、编译:
C:
\masm3-2.asm
C:
\masm>masm3-2
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[3-2.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
50390+415114Bytessymbolspacefree
0WarningErrors
0SevereErrors
2、链接:
c:
\link3-2.obj
C:
\masm>link3-2
Microsoft(R)OverlayLinkerVersion3.65
Copyright(C)MicrosoftCorp1983-1988.Allrightsreserved.
RunFile[3-2.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
LINK:
warningL4021:
nostacksegment
3、调试:
c:
\debug3-2.exe
1)、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:
内存地址指令代码反汇编的程序代码
C:
\masm>debug3-2.exe
-u
142F:
0000B82E14MOVAX,142E数据段的首地:
142E代码段的首地址:
142F
142F:
00038ED8MOVDS,AX
142F:
00058EC0MOVES,AX
142F:
00078D3E0000LEADI,[0000]
142F:
000BB200MOVDL,00
142F:
000DB00DMOVAL,0D
142F:
000FAESCASB
142F:
00107404JZ0016
142F:
0012FEC2INCDL
142F:
0014EBF9JMP000F
142F:
001688160F00MOV[000F],DL
142F:
001AA00F00MOVAL,[000F]
142F:
001DB30AMOVBL,0A
142F:
001FF6F3DIVBL
2)、从上一步结果中找到数据段的首地址142E,查看里面存储的数据,数据段从首地址142E开始存储了aBCEFghil50XyZ:
-d142E:
0000
142E:
00006142434546676869-6C353058795A0D00aBCEFghil50XyZ..
142E:
0010B82E148ED88EC08D-3E0000B200B00DAE........>.......
142E:
00207404FEC2EBF98816-0F00A00F00B30AF6t...............
142E:
0030F30C308AD0B402CD-21B400A00F00F6F3..0.....!
.......
142E:
004080CC308AD4B402CD-21B44CCD2103FE80..0.....!
.L.!
...
142E:
00507E06407211807DFF-80720B8A5DFF2AFF~.@r..}..r..].*.
142E:
006038A7BA42751D8A05-3846067426EB2D908..Bu...8F.t&.-.
142E:
007046807CFF80720D46-8A5CFF2AFF38BFBAF.|..r.F.\.*.8..3)、从反汇编地址中找到把数据段的首地址142E传给寄存器AX的指令地址:
0005,用G命令执行到地址0005用T命令单步执行,看寄存器AX,DS,ES的内容的变化
-g0005
AX=142EBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=141ESS=142ECS=142FIP=0005NVUPEIPLNZNAPONC
142F:
00058EC0MOVES,AX
-t
AX=142EBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=142ESS=142ECS=142FIP=0007NVUPEIPLNZNAPONC
142F:
00078D3E0000LEADI,[0000]DS:
0000=4261
-t
AX=142EBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=142ESS=142ECS=142FIP=000BNVUPEIPLNZNAPONC
142F:
000BB200MOVDL,00
-t
AX=142EBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=142ESS=142ECS=142FIP=000DNVUPEIPLNZNAPONC
142F:
000DB00DMOVAL,0D
-t
AX=140DBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0000
DS=142EES=142ESS=142ECS=142FIP=000FNVUPEIPLNZNAPONC
142F:
000FAESCASB
-t
AX=140DBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0001
DS=142EES=142ESS=142ECS=142FIP=0010NVUPEINGNZNAPECY
142F:
00107404JZ0016
-t
AX=140DBX=0000CX=004DDX=0000SP=0000BP=0000SI=0000DI=0001
DS=142EES=142ESS=142ECS=142FIP=0012NVUPEINGNZNAPECY
142F:
0012FEC2INCDL
-t
AX=140DBX=0000CX=004DDX=0001SP=0000BP=0000SI=0000DI=0001
DS=142EES=142ESS=142ECS=142FIP=0014NVUPEIPLNZNAPOCY
142F:
0014EBF9JMP000F
4)然后直接G命令运行完毕
-g
Divideoverflow;无法在屏幕上输出,除法溢出,但我不知明原因
Programterminatednormally
-r
;用R命令查看一下各个寄存器的内容:
-r
AX=140DBX=0000CX=004DDX=0001SP=0000BP=0000SI=0000DI=0001
DS=142EES=142ESS=142ECS=142FIP=0014NVUPEIPLNZNAPOCY
142F:
0014EBF9JMP000F
4、运行2-2.exe,完全执行程序,最后再查看数据段最后的结果:
-d142E:
0000
142E:
00006142434546676869-6C353058795A0D0EaBCEFghil50XyZ..
142E:
0010B82E148ED88EC08D-3E0000B200B00DAE........>.......
142E:
00207404FEC2EBF98816-0F00A00F00B30AF6t...............
142E:
0030F30C308AD0B402CD-21B400A00F00F6F3..0.....!
.......
142E:
004080CC308AD4B402CD-21B44CCD2103FE80..0.....!
.L.!
...
142E:
00507E06407211807DFF-80720B8A5DFF2AFF~.@r..}..r..].*.
142E:
006038A7BA42751D8A05-3846067426EB2D908..Bu...8F.t&.-.
142E:
007046807CFF80720D46-8A5CFF2AFF38BFBAF.|..r.F.\.*.8..
--Q
(3)1、编译:
C:
\masm3-3.asm
C:
\masm>masm3-3
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[3-3.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
50352+415152Bytessymbolspacefree
0WarningErrors
0SevereErrors
2、链接:
c:
\link3-3.obj
C:
\masm>link3-3
Microsoft(R)OverlayLinkerVersion3.65
Copyright(C)MicrosoftCorp1983-1988.Allrightsreserved.
RunFile[3-3.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
LINK:
warningL4021:
nostacksegment
3、调试:
c:
\debug3-3.exe
1)、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:
内存地址指令代码反汇编的程序代码
C:
\masm>debug3-3.exe
-u
1430:
0000B82E14MOVAX,142E数据段的首地:
142E代码段的首地址:
1430
1430:
00038ED8MOVDS,AX
1430:
0005BA0000MOVDX,0000
1430:
0008B409MOVAH,09
1430:
000ACD21INT21
1430:
000CB401MOVAH,01
1430:
000ECD21INT21
1430:
0010A21E00MOV[001E],AL
1430:
00133C0DCMPAL,0D
1430:
00157427JZ003E
1430:
00173C61CMPAL,61
1430:
001972EAJB0005
1430:
001B3C7ACMPAL,7A
1430:
001D77E6JA0005
1430:
001FB37AMOVBL,7A
2)、从上一步结果中找到数据段的首地址142E,查看里面存储的数据,数据段从首地址142E开始存储了pleaseinputaxiaoxiechar:
$:
-d142E:
0000
142E:
0000706C656173652069-6E70757420612078pleaseinputax
142E:
001069616F7869652063-6861723A20240000iaoxiechar:
$..
142E:
0020B82E148ED8BA0000-B409CD21B401CD21...........!
...!
142E:
0030A21E003C0D74273C-6172EA3C7A77E6B3...<.t' 142E: 00407A2AD880C361B220-B402CD218AD3B402z*...a....! .... 142E: 0050CD21B402B20DCD21-B20ACD21EBCE881E.! .....! ...! .... 142E: 00601F00B44CCD218A05-3846067426EB2D90...L.! ..8F.t&.-. 142E: 007046807CFF80720D46-8A5CFF2AFF38BFBAF.|..r.F.\.*.8.. -3)、从反汇编地址中找到把数据段的首地址142E传给寄存器AX的指令地址: 0005,用G命令执行到地址0005然后用T命令单步执
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告