实验三.docx
- 文档编号:30642230
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:19
- 大小:233.56KB
实验三.docx
《实验三.docx》由会员分享,可在线阅读,更多相关《实验三.docx(19页珍藏版)》请在冰豆网上搜索。
实验三
汇编语言程序实验报告
实验三字符串传递实验
学号13
班级09计本
专业计算机科学与技术
姓名陈严
机房号321
微机号
日期
成绩
一、实验内容(包括实验要求)
(一)掌握字符串的传递过程
(二)把40个字母a的字符串从源缓冲区传送到目的缓冲区
1、编译:
c:
\masm.asm
2、链接:
c:
\link.obj
3、调试:
c:
\debug.exe
4、运行:
c:
\.exe
1)先用命令U反汇编整个程序,查看每条指令的物理地址,
1、编译:
C:
\masm430.asm
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
50792+450136Bytessymbolspacefree0WarningErrors
0SevereErrors
2、链接:
c:
\link430.obj
Microsoft(R)OverlayLinkerVersion3.60
Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.
RunFile[430.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
LINK:
warningL4021:
nostacksegment
3、调试:
c:
\debug430.exe
1)、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:
内存地址指令代码反汇编的程序代码
-u0B75:
00001EPUSHDS
0B75:
00012BC0SUBAX,AX
0B75:
000350PUSHAX
0B75:
0004B86F0BMOVAX,0B6F;数据段的首地址ds0b6f
0B75:
00078ED8MOVDS,AX
0B75:
0009B8720BMOVAX,0B72;附加段的首地址es0b72
0B75:
000C8EC0MOVES,AX
0B75:
000E8D360000LEASI,[0000]
0B75:
00128D3E0000LEADI,[0000]
0B75:
0016FCCLD
0B75:
0017B92800MOVCX,0028
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
0B75:
001CB402MOVAH,02;为了在DOS格式下,程序运行完毕后可以看到运行结果,特地增加了一个输入语句
0B75:
001ECD21INT21
-u
0B75:
0020CBRETF
2)、从上一步结果中找到数据段的首地址0B6F,附加段的首地址0B72,查看里面存储的数据,数据段从首地址0B6F开始40个字节中存储了40个字符a:
-d0b6f:
0000
0B6F:
00006161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B6F:
00106161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B6F:
00206161616161616161-0000000000000000aaaaaaaa........
0B6F:
00300000000000000000-0000000000000000................
0B6F:
00400000000000000000-0000000000000000................
0B6F:
00500000000000000000-0000000000000000................
0B6F:
00601E2BC050B86F0B8E-D8B8720B8EC08D36.+.P.o....r....6
0B6F:
007000008D3E0000FCB9-2800F3A4B402CD21...>....(......!
-d0b72:
0000;附加段从首地址0B72开始40个字节中存储了40个空字符
0B72:
00000000000000000000-0000000000000000................
0B72:
00100000000000000000-0000000000000000................
0B72:
00200000000000000000-0000000000000000................
0B72:
00301E2BC050B86F0B8E-D8B8720B8EC08D36.+.P.o....r....6
0B72:
004000008D3E0000FCB9-2800F3A4B402CD21...>....(......!
0B72:
0050CB00000000000000-0000000000000000................
0B72:
00606161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B72:
00706161616161616161-6161616161616161aaaaaaaaaaaaaaaa
3)、从反汇编地址中找到把数据段的首地址0B6F传给寄存器AX的指令地址0B75:
0007,用G命令执行到地址0007,然后用T命令单步执行,看寄存器AX,DS,ES的内容的变化
-G0007
AX=0B6FBX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B5FES=0B5FSS=0B6FCS=0B75IP=0007NVUPEIPLZRNAPENC
0B75:
00078ED8MOVDS,AX
-T
AX=0B6FBX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B5FSS=0B6FCS=0B75IP=0009NVUPEIPLZRNAPENC
0B75:
0009B8720BMOVAX,0B72
-T
AX=0B72BX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B5FSS=0B6FCS=0B75IP=000CNVUPEIPLZRNAPENC
0B75:
000C8EC0MOVES,AX
-T
AX=0B72BX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B72SS=0B6FCS=0B75IP=000ENVUPEIPLZRNAPENC
0B75:
000E8D360000LEASI,[0000]DS:
0000=6161
-T
AX=0B72BX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B72SS=0B6FCS=0B75IP=0012NVUPEIPLZRNAPENC
0B75:
00128D3E0000LEADI,[0000]DS:
0000=6161
-T
AX=0B72BX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B72SS=0B6FCS=0B75IP=0016NVUPEIPLZRNAPENC
0B75:
0016FCCLD
4)、让程序执行到传送准备工作完成后的地址0B75:
0016FCCLD,查看源偏移地址SI和目标偏移地址DI的值,以及移动次数存放的寄存器CX,然后用T命令单步执行,看寄存器源地址(DS:
DI)和目标地址(ES:
SI)的内容的变化
-g0016
AX=0B72BX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B72SS=0B6FCS=0B75IP=0016NVUPEIPLZRNAPENC
0B75:
0016FCCLD
-t
AX=0B72BX=0000CX=0111DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B72SS=0B6FCS=0B75IP=0017NVUPEIPLZRNAPENC
0B75:
0017B92800MOVCX,0028
-t
AX=0B72BX=0000CX=0028DX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=0027DX=0000SP=FFFCBP=0000SI=0001DI=0001
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=0026DX=0000SP=FFFCBP=0000SI=0002DI=0002
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=0025DX=0000SP=FFFCBP=0000SI=0003DI=0003
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-dds:
0000;进行了三次传送操作后,查看一下源缓冲区和目的缓冲区的内容
0B6F:
00006161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B6F:
00106161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B6F:
00206161616161616161-0000000000000000aaaaaaaa........
0B6F:
00306161610000000000-0000000000000000aaa.............
0B6F:
00400000000000000000-0000000000000000................
0B6F:
00500000000000000000-0000000000000000................
0B6F:
00601E2BC050B86F0B8E-D8B8720B8EC08D36.+.P.o....r....6
0B6F:
007000008D3E0000FCB9-2800F3A4B402CD21...>....(......!
-des:
0000
0B72:
00006161610000000000-0000000000000000aaa.............
0B72:
00100000000000000000-0000000000000000................
0B72:
00200000000000000000-0000000000000000................
0B72:
00301E2BC050B86F0B8E-D8B8720B8EC08D36.+.P.o....r....6
0B72:
004000008D3E0000FCB9-2800F3A4B402CD21...>....(......!
0B72:
0050CB00000000000000-0000000000000000................
0B72:
00606161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B72:
00706161616161616161-6161616161616161aaaaaaaaaaaaaaaa
-r;用R命令查看一下各个寄存器的内容:
AX=0B72BX=0000CX=0025DX=0000SP=FFFCBP=0000SI=0003DI=0003
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
;用E命令修改源缓冲区的内容,然后执行传送操作,看目的缓冲区的内容的变化:
-e0b6f:
0004
0B6F:
000461.6761.6861.6961.70
0B6F:
000861.7161.71
-dds:
00000B6F:
00006161616167686970-7171616161616161aaaaghipqqaaaaaa
0B6F:
00106161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B6F:
00206161616161616161-0000000000000000aaaaaaaa........
0B6F:
00306161610000000000-0000000000000000aaa.............
0B6F:
00400000000000000000-0000000000000000................
0B6F:
00500000000000000000-0000000000000000................
0B6F:
00601E2BC050B86F0B8E-D8B8720B8EC08D36.+.P.o....r....6
0B6F:
007000008D3E0000FCB9-2800F3A4B402CD21...>....(......!
-tAX=0B72BX=0000CX=0024DX=0000SP=FFFCBP=0000SI=0004DI=0004
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-tAX=0B72BX=0000CX=0023DX=0000SP=FFFCBP=0000SI=0005DI=0005
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=0022DX=0000SP=FFFCBP=0000SI=0006DI=0006
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=0021DX=0000SP=FFFCBP=0000SI=0007DI=0007
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=0020DX=0000SP=FFFCBP=0000SI=0008DI=0008
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-;源缓冲区变化了的内容传送到了目的缓冲区,结果如下:
-des:
0000
0B72:
00006161616167686970-0000000000000000aaaaghip........
0B72:
00100000000000000000-0000000000000000................
0B72:
00200000000000000000-0000000000000000................
0B72:
00301E2BC050B86F0B8E-D8B8720B8EC08D36.+.P.o....r....6
0B72:
004000008D3E0000FCB9-2800F3A4B402CD21...>....(......!
0B72:
0050CB00000000000000-0000000000000000................
0B72:
00606161616161616161-6161616161616161aaaaaaaaaaaaaaaa
0B72:
00706161616161616161-6161616161616161aaaaaaaaaaaaaaaa
-r
AX=0B72BX=0000CX=0020DX=0000SP=FFFCBP=0000SI=0008DI=0008
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
;用F命令修改源缓冲区的内容,然后执行传送操作,看目的缓冲区的内容的变化:
-f0b6f:
00060009"yupkh"
-t
AX=0B72BX=0000CX=001FDX=0000SP=FFFCBP=0000SI=0009DI=0009
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=001EDX=0000SP=FFFCBP=0000SI=000ADI=000A
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=001DDX=0000SP=FFFCBP=0000SI=000BDI=000B
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=001CDX=0000SP=FFFCBP=0000SI=000CDI=000C
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
-t
AX=0B72BX=0000CX=001BDX=0000SP=FFFCBP=0000SI=000DDI=000D
DS=0B6FES=0B72SS=0B6FCS=0B75IP=001ANVUPEIPLZRNAPENC
0B75:
001AF3REPZ
0B75:
001BA4MOVSB
;把源缓冲区中从地址0b6f:
0006到0009的内容改为"yupk",但在执行此次块修改命令F前,源缓冲区的前8个字符已经传送到目的缓冲区,所以此次块修改命令F执行后,源缓冲区内容从地址0b6f:
0006到0009的内容改为"yupk",执行若干次传送指令后,目的缓冲区内从ES:
0008到0009之间的内容接收了源缓冲区的内容"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验