
系网站automationseueducn课程下载.ppt
34页系网站automationseueducn课程下载Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope有生命必有希望有生命必有希望• 基础性实验(准备、练习)基础性实验(准备、练习) • 单元验证性实验单元验证性实验• 综合实验综合实验 重重 点点•熟悉熟悉8086指令、汇编语言程序设计和调试;指令、汇编语言程序设计和调试;•掌握常用接口电路功能和控制编程掌握常用接口电路功能和控制编程•综合设计:硬件电路(示波器、万用表)调试;综合设计:硬件电路(示波器、万用表)调试; 电路电路/程序设计、程序(含中断服务)动态调试程序设计、程序(含中断服务)动态调试《微机实验》《微机实验》2•教材:戴先中等,微机硬件应用实践教材:戴先中等,微机硬件应用实践-原理与接口,原理与接口,东南大学出版社东南大学出版社,1999 •地点:中心楼地点:中心楼4楼计算机硬件实验中心楼计算机硬件实验中心 要要 求求•验证型实验:两人一组(单双号)每人为主负责验证型实验:两人一组(单双号)每人为主负责实验实验3-10中四个实验,报告独立完成;中四个实验,报告独立完成;•综合实验:独立完成,按学号位数综合实验:独立完成,按学号位数1-10((0)分别)分别完成教材完成教材P73-78相应的综合测试题相应的综合测试题.《微机实验》《微机实验》3 考查成绩考查成绩•((1)动态调试程序(自选)操作()动态调试程序(自选)操作(10%))•((2)验证型实验抽查(一次)及报告()验证型实验抽查(一次)及报告(50%))•((3)综合实验检查及报告()综合实验检查及报告(40%))《微机实验》《微机实验》41.. 实实验验前前必必须须准准备备::实实验验成成绩绩按按各各次次出出勤勤和和检检查查情情况况及及综综合合实实验验结结果果评评定定;;实实验验安安排排中中的的单单元元实实验验必必须须参参加加并完成;考查不及格补做安排很困难;并完成;考查不及格补做安排很困难; 2..实实验验操操作作须须按按规规程程进进行行,,不不要要带带电电操操作作,,尤尤其其不不要要多线一起拉拔操作以防短路;多线一起拉拔操作以防短路;3. 实验报告按要求完成(隔一周的周一上课时交),实验报告按要求完成(隔一周的周一上课时交),报报告的格式要规范,包括实验目的、内容、实验步骤(方告的格式要规范,包括实验目的、内容、实验步骤(方法)、实验结果与分析。
法)、实验结果与分析重点是对思考题的回答,以及重点是对思考题的回答,以及针对实验目的做总结针对实验目的做总结其中程序部分只要写出有新意的其中程序部分只要写出有新意的的程序片段,并作适当的讨论及体会意见;实验现象及的程序片段,并作适当的讨论及体会意见;实验现象及问题如实记录;实验报告未完成者不予验收综合作业问题如实记录;实验报告未完成者不予验收综合作业(评分)第一次实验报告应包括基础练习总结(实际第一次实验报告应包括基础练习总结(实际操作时间操作时间, ,含课外时间)含课外时间) 实验准备及实验报告要求实验准备及实验报告要求5编辑、汇编与链接程序编辑、汇编与链接程序编辑器(编辑器(Editor)Editor) 程序设计 EDITEDIT 汇编器汇编器(Assembler(Assembler) 汇编语言(与机器有关) MASM/ASM/TASMMASM/ASM/TASM 链接器(链接器(Linker)Linker) 待装配的BIN指令代码 LINKLINK ( XXXX.EXE) 可执行BIN指令代码动态调试器动态调试器DEBUG XXXX.EXEDEBUG XXXX.EXE 动态调试 6 实验一实验一 基础操作与调试基础操作与调试 实验一实验一A 8086/8088指令与指令与DEBUG 程序的使用程序的使用 实验一实验一B 8086/8088汇编语言程序设计与调试汇编语言程序设计与调试((1 1)实验环境:)实验环境:PCPC,,DOSDOS命令,文件管理命令,文件管理((2 2))全全部部命命令令功功能能((I/OI/O命命令令暂暂不不做做,,留留待待实实验验2 2时时完完成成))、、全全部部指指令令对对内内存存、、各各寄寄存存器器、、堆堆栈栈的的影影响响,,((含含可可能能的的段段超越)观察超越)观察8086/80888086/8088所有指令的单步运行结果。
所有指令的单步运行结果 (3) (3) 完完整整的的汇汇编编语语言言编编辑辑、、汇汇编编和和链链接接过过程程;;分分段段存存储储的的实实现现,,标标号号、、符符号号与与目目标标代代码码的的关关系系,,汇汇编编语语言言程程序序的的动动态调试多模块汇编程序试验多模块汇编程序试验4 4))WindowsWindows下进入命令行方式下进入命令行方式/ /常用常用MS-DOSMS-DOS命令命令 Windows下下利利用用开开始始—运运行行—输输入入cmd 或或command ↙ ↙或或在在程程序序下下进进入入MS-DOS方方式式或或附附件件下下((Win2K)进进入入命命令令提示符提示符进入命令行方式进入命令行方式 7 实验一实验一 基础操作与调试基础操作与调试 常用常用MS-DOSMS-DOS命令命令 DIR A:[ DIR A:[目录名目录名] ] ↙ ↙ ( (显示指定盘显示指定盘[ [目录目录] ]存储文件列表)存储文件列表) COPY A:[\mydir\] COPY A:[\mydir\]文件名文件名 D:\tmpdir\ D:\tmpdir\ ↙ ↙ ( (将将A:[mydirA:[mydir目录下指定文件复制到目录下指定文件复制到D D盘(指定目录))盘(指定目录)) DEL A:[\mydir\] DEL A:[\mydir\]文件名文件名 ↙ ↙ (删除指定文件)(删除指定文件) MD A:\mydir MD A:\mydir ↙ ↙ (在在A盘上新建盘上新建mydir子目录子目录) CD A:\mydir CD A:\mydir ↙ ↙ (指定指定A盘上盘上mydir为当前工作目录为当前工作目录) RD A:\mydir RD A:\mydir ↙ ↙ (删除删除A盘上盘上mydir子目录子目录) C:\masm4\masm myprog; ↙ ↙ 指指定定执执行行C盘盘上上masm4目目录录下下的的masm.exe 带带参参数数myprog;8实验一实验一A 8086/8088指令与指令与DEBUG 程序的使用程序的使用 实验环境:利用目标代码级调试程序实验环境:利用目标代码级调试程序DEBUGDEBUG主主要要特特点点1 1))能能够够在在最最小小环环境境下下运运行行汇汇编编程程序序( (代代码码级级而而非非符符号号级级)2)2))提提供供极极简简单单的的修修改改手手段段((寄寄存存器器、、存存储储器器、、I/OI/O等等))3 3))提提供供用用户户与与计计算算机机内内部部联联系系的的窗窗口口((命命令令行行))::显显示、修改、单步、过程、断点、文件装入、上装。
示、修改、单步、过程、断点、文件装入、上装局局限限性性::不不能能使使用用宏宏指指令令和和大大部部分分伪伪指指令令——分分段段调调试试/ /短短程序;不能形成可执行文件(程序;不能形成可执行文件(.EXE.EXE)) 实验一实验一 基础操作与调试基础操作与调试9 命令行调试器命令行调试器DEBUG启动启动 (MS DOS下在下在C或或D:>输入输入DEBUGDEBUG命令为单英文字母,后跟参数间隔符命令为单英文字母,后跟参数间隔符“,”“,”或空格或空格(1)+ (1)+ ↙↙ ((ENTERENTER回车键回车键) ) 后命令才有效;后命令才有效;(2)(2)地址地址/ /数据用十六进制数表示数据用十六进制数表示,不用,不用“H”“H”;;(3(3))Ctrl+BreakCtrl+Break((C C)键可停止命令的执行;)键可停止命令的执行;(4(4))PAUSE/CtrlPAUSE/Ctrl--Num LockNum Lock键暂停上卷的输出行任意键继续键暂停上卷的输出行任意键继续; ;(5)-?((5)-?(帮助命令,显示所有命令及格式)帮助命令,显示所有命令及格式)(6)—Q(6)—Q退出退出P PD>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2] ↙ ↙ 命令规定命令规定10??----帮助命帮助命令令Assemble A [address]Compare C range addressDump D [range]Enter E address [list]Fill F range listGo G [=address] addressesHex H value1 value2Input I portLoad L [address] [drive] [firstsector][number]Move M range addressName N [pathname] [arglist]Output O port byteProceed P [=address] [number]:-??↙ ↙11R----命令命令RF RXX 检查和修改寄存器内容命令检查和修改寄存器内容命令 R显显示示CPUCPU内内部部寄寄存存器器的的内内容容和和全全部部标标志志位状态。
位状态RAX ↙ ↙ -AX 0000 :((XX)) ↙ ↙-R [16位寄存器名位寄存器名] (AX, BX,CX,DX,SI,DI,IP,SP,CS,DS,ES,SS)AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=18A1 ES=18A1 SS=1800 CS=18C0 IP=0100 NV UP EI PL NZ NA PO NC18C0::0100 1EPUSH DS-RF ↙ ↙NV UP EI PL NZ NA PO NC –(DN PE..) ↙ ↙ Flags: OV/NV-DN/UP-EI/DI-NG/PL-ZR/NZ-AC/NA-PE/PO-CY/NC 显示和修改一个指定寄定器的内容和标志位的状态显示和修改一个指定寄定器的内容和标志位的状态12 D 显示内存命令显示内存命令D[ [地址地址] ] ↙↙( ( 默认长度默认长度L=80H128L=80H128个字节,个字节,DSDS,,当前地址当前地址) ) (默认 (默认DS:) CS:300DS:) CS:300-D [-D [地址范围地址范围] ] ↙↙ 显示指定内存范围的内容。
显示指定内存范围的内容 -DES:100L300DES:100L300或或 D100 3000 D100 3000-D -D ↙↙ (128(128个字节个字节) ) 从上一个从上一个D D命令所显示的命令所显示的最后一个单元的下一个单元开始最后一个单元的下一个单元开始( (首次首次CS:IP)CS:IP)偏移地址,段地址为偏移地址,段地址为DSDS的内容,地址范围,可的内容,地址范围,可以指定段地址和起始偏移地址和终止偏移地址以指定段地址和起始偏移地址和终止偏移地址, ,或L或LXXXXXXXXD200 -D200 或或-DDS:200-DDS:2001A40:0200 30 20 32 33 34 35 36-37 38 39 F1 F2 A3 A4 F0 0_23456789……1A40:0210 AA 5513E 修改存储单元内容命令修改存储单元内容命令( ( 默认默认 DS DS,当前地址,当前地址) )E [E [地址地址] [] [内容表内容表] ] ↙↙用命令所给定的内容表去代用命令所给定的内容表去代替指定地址范围的内存单元内容替指定地址范围的内存单元内容。
其中:内容表为一个十六进制数,也可以是用单引号括起的其中:内容表为一个十六进制数,也可以是用单引号括起的一串字符一串字符E [-E [地址地址] ] ↙ ↙ 逐个单元连续修改单元内容逐个单元连续修改单元内容空格空格跳到下一单元,回车修改结束)跳到下一单元,回车修改结束)-E200 ’AAAAAAA’ 20 33 44’88888’ (–D200 -E200 ’AAAAAAA’ 20 33 44’88888’ (–D200 检查检查) )-E200 -E200 ↙↙ 1A40:0200 41.32<1A40:0200 41.32<空格空格> 41.<> 41.<空格空格> 41.33 > 41.33 ↙↙14 F 块填充内存命令块填充内存命令/ M 内存移动命令内存移动命令 ( ( 默认长度默认长度L=80H128L=80H128个字节,个字节,DSDS,当前地址,当前地址) )F [F [范围范围][][单元内容表单元内容表] ] ↙↙将单元内容表中的内容的将单元内容表中的内容的内容重复装入内存的指定范围内内容重复装入内存的指定范围内F[ES:]200 L300-F[ES:]200 L300或或500 ‘124567’30 40 500 ‘124567’30 40 55‘5555’ 55‘5555’ ↙↙M [M [源地址范围源地址范围][][目标起始地址目标起始地址] ] 把源地址范围的内把源地址范围的内容移至以目标起始地址开始的单元中。
容移至以目标起始地址开始的单元中其中源地址范围和目的起始地址可为偏移地址,段其中源地址范围和目的起始地址可为偏移地址,段地址默认为地址默认为DSDS的内容M[CS::]200L50 [ES::]800 ↙↙15 S 搜索指定内容命令搜索指定内容命令/ C 块比较命令块比较命令S [S [地址范围地址范围][][表表] ] 在指定地址范围内搜索表中内在指定地址范围内搜索表中内容,搜索到就列出表中元素所在地址容,搜索到就列出表中元素所在地址S[ES-S[ES::]200[L40] ‘123’33 44 55‘433’ ]200[L40] ‘123’33 44 55‘433’ ↙↙C [C [源地址范围源地址范围] ],,[ [目标地址目标地址] ] 从源地址起始的单从源地址起始的单元开始逐个比较,比较到源终止地址为止比较结元开始逐个比较,比较到源终止地址为止比较结果如果不一致,则以果如果不一致,则以[ [源地址源地址][][源内容源内容][][目的内容目的内容][][目的地址目的地址] ]的形式显示结果的形式显示结果C[ES-C[ES::]100L300 [CS]100L300 [CS::]2000 ]2000 ↙↙1A401A40::2012011A401A40::2202201A80:0105 87 88 1A401A80:0105 87 88 1A40::200520051A80:0148 33 53 1A401A80:0148 33 53 1A40::2148214816 U 反汇编命令反汇编命令 U [U [地址地址[ [范围范围]] ]] 将指定范围内的代码以汇编将指定范围内的代码以汇编 语语言形式显示,同时显示该代码位于内存的地址言形式显示,同时显示该代码位于内存的地址和机器。
和机器 (默认段寄存器为(默认段寄存器为CSCS,以,以U U命令的最后一条指令地命令的最后一条指令地址的下一个单元作为起始地址;址的下一个单元作为起始地址;[ [初值初值CSCS::IP]IP],范围长度为,范围长度为20H20H字字节目标代码)节目标代码) -U[ES -U[ES::]100[L200/ 120]]100[L200/ 120] ↙↙1A40::100 1EPUSH DS1A40::101 A1 00 20MOV AX,,[2000]1A40::104 BB 00 20MOV BX,,2000:17A 汇编输入命令汇编输入命令 A[A[段寄存器名段寄存器名]:[]:[偏移地址偏移地址] ] 将汇编语言程序指令将汇编语言程序指令逐行逐行直接输入内存单元直接输入内存单元默认段寄存器(默认段寄存器CS,偏移地址为上次汇,偏移地址为上次汇编尾地址(初值编尾地址(初值CS::IP)))) -A[[CS:]100]-A[[CS:]100]↙ ↙ 或或A 1A40:100 A 1A40:100 或或A100A100设当前设当前CS=1A40HCS=1A40H1A40:0100 MOV AX,,100 ↙↙1A40:0102 MOV BX, 2000↙↙1A40:0106↙↙ (回车结束汇编输入)(回车结束汇编输入)H 十六进制数据运算命令十六进制数据运算命令 H H数据数据1 1 数据数据2 2 ( (将两十六进制数据相加、减结果显示在屏幕上。
将两十六进制数据相加、减结果显示在屏幕上 -H 200 8000A00 FA000A00 FA00 18T 逐条指令跟踪与显示命令(T逐条指令跟踪与显示命令(Trace into)) T[T[=地址=地址] ] 单步执行当前指定地址处的指令(默认为单步执行当前指定地址处的指令(默认为CS:IPCS:IP处),显示处),显示CPUCPU所有寄存器内容和全部标志位的所有寄存器内容和全部标志位的状态,以及下一条指令的地址和内容(同执行R命令状态,以及下一条指令的地址和内容(同执行R命令)) (默认段寄存器(默认段寄存器CSCS,偏移地址为当前,偏移地址为当前IPIP指定地址(初值指定地址(初值CSCS::100100))AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=18A1 ES=18A1 SS=1800 CS=18C0 IP=0100 NV UP EI PL NZ NA PO NC18C0::0100 1EPUSH DS-T=[[CS:]100]-T=[[CS:]100]↙ ↙ 或或T=18C0:100T=18C0:100或或T=100T=100设当前设当前CS=18C0HCS=18C0HAX=0000 BX=0000 CX=0000 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=18A1 ES=18A1 SS=1800 CS=18C0 IP=0101 NV UP EI PL NZ NA PO NC18C0::0101 31 C0 XOR AX,AX19T 逐条指令跟踪与显示命令(T逐条指令跟踪与显示命令(Trace into)) T[T[=地址=地址][][步数步数] ] 多条跟踪命令,从指定地址开始;若多条跟踪命令,从指定地址开始;若命令中用命令中用[ [地址地址] ]给定了起始地址,则从起始地址开始,若给定了起始地址,则从起始地址开始,若未给定,则从当前地址(未给定,则从当前地址(CS:IPCS:IP)开始,执行命令中的)开始,执行命令中的[ [条条数数] ]决定一共跟踪几条指令后返回决定一共跟踪几条指令后返回DEBUGDEBUG状态。
状态 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=18A1 ES=18A1 SS=1800 CS=18C0 IP=0100 NV UP EI PL NZ NA PO NC18C0::0100 1EPUSH DS-T=[[CS:]100] 5-T=[[CS:]100] 5↙ ↙ -T5-T5↙↙-T=100 5 -T=100 5 ↙↙-T=18C0:100 5 -T=18C0:100 5 ↙↙20P (Proceed) 越过(挂停)命令越过(挂停)命令 P P[=地址][值(若干次)[=地址][值(若干次)] ](至下一指令前停止)类似SKIP执行执行PROC, LOOP, INT PROC, LOOP, INT 或或REPREP后发一条命令返回到下一指令处后发一条命令返回到下一指令处P=100 3-P=100 3↙↙ 断点将停在断点将停在CS:109CS:109处处 0AD8:0100 E8FE1E CALL 20000AD8:0103 E81A1F CALL 2020 0AD8:0106 E8271F CALL 20300AD8:0109 90 NOP:-P3-P3↙↙-P2-P2↙↙-P-P↙↙21G 运行/断点命令 运行/断点命令 G [=地址=地址][ 地址 地址[ 地址 地址…]]执行用户正在调试的程序执行用户正在调试的程序, ,其中=地址为执行的起始地址,默其中=地址为执行的起始地址,默认段地址为认段地址为CSCS中内容,或当前中内容,或当前(CS:IP)(CS:IP)。
再后面的地址为断点再后面的地址为断点地址DEBUGDEBUG规定最多设置规定最多设置1010个断点地址设置多个断点用于个断点地址设置多个断点用于调试较大的程序,即程序中有多个模块、多个通路时用,比调试较大的程序,即程序中有多个模块、多个通路时用,比较方便,在执行时不论走哪条通路,程序都可以在断点处停较方便,在执行时不论走哪条通路,程序都可以在断点处停下来,以便调整程序下来,以便调整程序 - -G=FFFF:0 热启动热启动- -G=100 200 热起始热起始CS:100,CS:100,断点断点CS:200CS:200- -G 2000:100↙ ↙ IPIP地址起到地址起到20002000::100100断点断点- -G=100 2000:100 3000:300 ↙↙两处断点两处断点- -G↙ ↙ ;连续运行;连续运行 G200 300G200 300 ? ?22I 端口输入命令端口输入命令 /O 输出命令输出命令 I端口地址I端口地址 从指定端口地址输入一个字节从指定端口地址输入一个字节- -I3F8 ↙↙ (COM1(COM1数据接收数据接收) )- -I40 ↙↙ ( (时钟计数器)时钟计数器)- -279 ↙↙ (打印机状态口)(打印机状态口)- -278 ↙↙ ((打印机数据口)打印机数据口)O O 端口地址,字节值端口地址,字节值 向指定端口地址输出一个字节向指定端口地址输出一个字节-O-O3F8 55↙↙ (COM1(COM1数据发送数据发送) )- -O27A 30 30↙↙ (LPT1(LPT1写控制字写控制字) )N N 文件命名命令 文件命名命令向指定端口地址输出一个字节向指定端口地址输出一个字节23文件操作文件操作命令命令N/L/WN/L/W N N [路径]文件名[路径]文件名 指定读写操作文件名L [L [起始装入地址起始装入地址][][驱动器号驱动器号][][起始扇区号起始扇区号][][所读扇区个所读扇区个数数] ] (1)(1)读文件:读文件:BXBX和和CXCX中存放所读文件的字节数(长度中存放所读文件的字节数(长度BX:CXBX:CX即即8 8位位HEX)HEX)。
当读入的文件有扩展名当读入的文件有扩展名.COM.COM或或.EXE.EXE,则始终装入,则始终装入CS:100HCS:100H中,中,命令中指定了地址也没用命令中指定了地址也没用;(2);(2)读磁盘:把指定驱动器和指定扇区范围读磁盘:把指定驱动器和指定扇区范围的内容读到内存的指定区域中的内容读到内存的指定区域中默认隐含地址为(默认隐含地址为CS:100HCS:100H))例:例:L[2000:100]L[2000:100] W[W[地址地址][][驱动器号驱动器号][][起始扇区号起始扇区号][][所写扇区个数所写扇区个数] ] (1) (1) 写写文件:把指定地址中文件:把指定地址中BXBX::CXCX长度的数据中应写入文件长度的数据中应写入文件(默认段地址为(默认段地址为CSCS)) 2)(2) 数据写盘:将调试的程序或数据写入指定的驱动器中 数据写盘:将调试的程序或数据写入指定的驱动器中24 实验一实验一 基础实验及准备基础实验及准备实验一实验一A 8086/8088指令与指令与DEBUG 程序的使用程序的使用一、实验目的一、实验目的1. 学习使用学习使用DEBUG程序的各种命令。
程序的各种命令2. 利用利用DEBUG学习学习8086/8088 CPU指令系统指令系统3. 了解计算机取指令执行指令的工作过程了解计算机取指令执行指令的工作过程4. 掌握用掌握用DEBUG调试程序调试程序二、基本实验任务二、基本实验任务 实验教材实验教材P84-89全部命令试操作,重点程序流控制和环全部命令试操作,重点程序流控制和环境检查、设置,纪录操作和主要结果现象;境检查、设置,纪录操作和主要结果现象; 不清楚的不清楚的8086/8088指令功能检查;指令功能检查;三、预习与实验检查三、预习与实验检查 实验前请预习实验前请预习, 实验中教师检查;实验中教师检查;切忌应付和不懂装懂,切忌应付和不懂装懂,有问题要敢问有问题要敢问25DEBUG程序使用注意事项程序使用注意事项1. 了解中断向量表,中断向量,中断子程了解中断向量表,中断向量,中断子程(任务任务5) 反汇编分析其中之一的代码;跟踪掌握某一中断的中反汇编分析其中之一的代码;跟踪掌握某一中断的中断指令的执行过程断指令的执行过程2. 掌握利用掌握利用T, P, G命令的区别命令的区别3. 调试与检查任务调试与检查任务 1)用用A命令输入指令后,尝试各指令功能;命令输入指令后,尝试各指令功能; 2)试用试用A命令输入程序后,先将程序写在硬盘上命令输入程序后,先将程序写在硬盘上 3)注意连续运行注意连续运行G命令实验时在程序段的最后加命令实验时在程序段的最后加INT 3 (单步)或(单步)或 INT 20(正常中止)(正常中止) 4)DEBUG不支持符号编程不支持符号编程, 标号的输入方法待自编汇标号的输入方法待自编汇编程序调试时观察。
编程序调试时观察4. 了解了解8088CPU取指令、执行指令的工作过程,分析死取指令、执行指令的工作过程,分析死机原因机原因.26实验一实验一B 8086/8088汇编语言程序设计与调试汇编语言程序设计与调试 ( 1)运行环境和编辑运行环境和编辑运行汇编程序必备的软件环境:运行汇编程序必备的软件环境:DOSDOS操作系统;汇编软件操作系统;汇编软件系统汇编系统盘应包含如下文件:系统汇编系统盘应包含如下文件: 实验一实验一 基础实验及准备基础实验及准备MASM MASM 宏汇编程序文件宏汇编程序文件LINK LINK 连接程序文件连接程序文件CREF CREF 索引程序文件(也可不用)索引程序文件(也可不用)EDIT EDIT 文本编辑程序(或文本编辑程序(或PEPE等文本编辑程序)等文本编辑程序)用户通过屏幕编辑程序用户通过屏幕编辑程序EDITEDIT(各功能)键入源程序,检查无误,可(各功能)键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为将源程序存到汇编系统盘上,该程序的扩展名为·ASM·ASM。
XXX.ASMXXX.ASM))(2) MASM(2) MASM汇编程序:格式、宏、模块汇编程序:格式、宏、模块OBJ: OBJ: 浮动汇编浮动汇编(相对关系)、段、变量待定位(相对关系)、段、变量待定位 27执执行行宏宏汇汇编编程程序序MASM----MASM----生生成成目目标标文文件件.OBJ.OBJ,,辅辅助助文件文件LSTLST,,CRFCRF(可选)(可选) 汇编链接过程汇编链接过程用汇编语言编写的源程序必须是一个完整的源程序,才能经过用汇编语言编写的源程序必须是一个完整的源程序,才能经过宏汇编程序宏汇编程序MASMMASM的汇编,生成一个目标程序为了完成汇编任的汇编,生成一个目标程序为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等定数据等 OBJOBJ将将源源程程序序的的操操作作码码部部分分变变为为机机器器码码,,但但地地址址操操作作数数是是可可浮浮动动的的相相对对地地址址,,而而不不是是实实际际地地址址,,因因此此需需经经LINKLINK连连接文件进行连接才能形成可执行文件。
接文件进行连接才能形成可执行文件LSTLST是是列列表表文文件件把把源源程程序序和和目目标标程程序序列列表表,,以以供供检检查查程程序序用CRFCRF是是交交叉叉索索引引文文件件,,对对源源程程序序所所用用的的各各种种符符号号进进行行前前后后对照的文件对照的文件28C:\masm\masm ↙↙ [MYFILE[.asm][,, mobj,,mlst,mcrf];; 汇编链接过程汇编链接过程Microsoft ((R)) Macro Assemble Version 5.00Copyright ((C)) Microsoft Corp 1981-1985,1987,All right reserved.Source filename [.ASM ]:MYFILE ↙↙ Object filename [MYFILE.OBJ ]:MYFILE ↙↙Source listing [NUL.LST ]:MYFILE ↙↙Cross-reference [NUL.CRF]:MYFILE ↙↙ 50678++410090 Bytes symbol space free 0 Warning Errors 0 Severe ErrorsMASM/R MASM/E----8087MASM/R MASM/E----8087实模式/仿真库方式实模式/仿真库方式29用用汇汇编编语语言言编编写写的的源源程程序序经经过过汇汇编编程程序序((MASMMASM))汇汇编编后后产产生生了了目目标标程程序序((.OBJ.OBJ)),,该该文文件件是是将将源源程程序序操操作作码码部部分分变变成成了了机机器器码码,,但但地地址址是是可可浮浮动动的的相相对对地地址址((逻逻辑辑地地址址)),,因因此此必必须须经经过过连连接接程程序序LINKLINK连连接接后后才才能能运运行行。
连连接接程程序序LINKLINK是是把把一一个个或或多多个个独独立立的的目目标标程程序序模模块块装装配配成成一一个个可可重重定定位位的的可可执执行行文文件件,,扩扩展展名名为为.EXE.EXE文文件件此此外外还还可可以以产产生生一一个内存映象文件,扩展名为个内存映象文件,扩展名为.MAP.MAP连接程序执行过程连接程序执行过程: : D>LINK ↙↙((直直接接链链接接 P1+P2+P3[, PEXE,PMAP,LIB1+LIB2]//MM;)) LINK 多模块链接多模块链接 Microsoft® overlay link Version 3.60Copyright ©Microsoft Corp 1983-1987 All right reservedObject Modules [.OBJ]::MYFILE ↙↙ Run File [MYFILE.EXE]::MYFILE ↙↙List File [NUL.MAP]::MYFILE ↙↙[;]Libraries [.LIB]:: ↙↙((LINK/HELP---帮助开关)帮助开关)30由由连连接接程程序序LINKLINK产产生生的的扩扩展展名名为为.MAP.MAP文文件件,,它它实实际际上上是是连连接接程程序序的的列列表表文文件件,,它它给给出出了了每每个个段段的的地地址址分分配配情情况况及及长长度度, ,((加加/M/M开开关关――――外部变量相对地址。
例如:外部变量相对地址例如:D>TYPE MYFILE.MAP↙↙内存映象文件(内存映象文件(.MAP))Start Stop Length Name Class00000H 0000FH 0010H DATA00010H 0004FH 0040H STACK00050H 0005FH 0010H CODEOrigin Group[Address Publics by name0900:0002 mmm0010:0070 VV1 Address Publics by value0010:0070 VV10900:0002 mmm ]Program entry point at 0005:000031汇汇编编后后产产生生的的交交叉叉索索引引文文件件,,扩扩展展名名为为.CRF,.CRF,它它列列出出了了源源程程序序中中定定义义的的符符号号((包包括括::标标号号、、变变量量等等))和和程程序序中中引引用这些符号的情况用这些符号的情况。
如如果果要要查查看看这这个个符符号号表表,,必必须须使使用用CREF.EXECREF.EXE的的文文件件,,它它根根据据.CRF.CRF文文件件建建立立一一个个扩扩展展名名为为.REF.REF的的文文件件,,而而后后再再用用DOSDOS的的TYPETYPE命命令令显显示示,,就就可可以以看看到到这这个个符符号号使使用用情情况况表表具体操作方法如下:具体操作方法如下:D>CREF↙↙交叉索引文件(交叉索引文件(.CRF)) cref filename [.CRF]::MYFILE↙↙ list filename [MYFILE.REF]::↙↙D>TYPE MYFILE.REF↙↙ 32.EXE.EXE装装入入后后各各寄寄存存器器((段段的的分分配配))、、已已定定义义变变量量((数数据据))地地址,N/F指针变量;址,N/F指针变量;. .各伪指令的作用;各伪指令的作用;. .多模块(多模块(PUBLIC/EXTRNPUBLIC/EXTRN)链接;/)链接;/M,8087M,8087指令实验指令实验 .汇编指令与目标代码指令的差别汇编指令与目标代码指令的差别 .重要重要DOS/BIOSDOS/BIOS功能调用(控制台输入/输出)功能调用(控制台输入/输出). .不要试图跟踪不要试图跟踪 DOS/BIOS DOS/BIOS调用,尽量用断点或过程调用,尽量用断点或过程P P命令命令. .选做:高级语言与汇编语言接口选做:高级语言与汇编语言接口 执行、行、目目标代代码格式比格式比较与与调试33(1)DEBUG----(1)DEBUG----命令行目标代码调试器命令行目标代码调试器(2)CV—CodeView Microsoft(2)CV—CodeView Microsoft公司源代码调试器公司源代码调试器 MASM/Zi myprog; MASM/Zi myprog; Link/codeview myprog; Link/codeview myprog;(3)TD—Turbo Debuger Borland(3)TD—Turbo Debuger Borland公司源代码调试器公司源代码调试器 TASM/zi myprog; TASM/zi myprog; 兼容兼容MASM/ZiMASM/Zi TLINK/v myprog+…; (4) Compuware Co. Compuware Co.的的NUMEGANUMEGA Soft-ICE Soft-ICE EXE EXE,,DLLDLL,,OCXOCX,,VxDVxD 调试工具调试工具34。
