微机原理上机实验微机原理程序调试基础指导.docx
《微机原理上机实验微机原理程序调试基础指导.docx》由会员分享,可在线阅读,更多相关《微机原理上机实验微机原理程序调试基础指导.docx(14页珍藏版)》请在冰豆网上搜索。
微机原理上机实验微机原理程序调试基础指导
宏汇编语言编程调试
上机实验报告
姓名:
XXX
学号:
1113014XX
班级:
机械110X
学院:
机械工程学院
2013/11/7
实验一宏汇编语言编程调试
一、 实验目的
为了深入理解汇编语言指令系统常用指令的含义,掌握汇编语言程序的编辑、连接和调试方法,用进行编程调试实验。
是在DOS环境下运行的一种功能很强的宏汇编程序,除具有一般汇编程序的功能外,还支持宏处理、条件汇编。
一、 实验方法
宏汇编语言系统只有数百K字节,主要由,,和四个文件组成,系统不需要安装。
由于Windows2000以上版本的操作系统没有MS-DOS方式,需从开始菜单的运行子菜单处键入CMD或COMMAND命令,进入命令行方式,设法进入汇编系统所在的文件夹子目录后。
操作过程如下:
文件名.ASM
进入编辑状态,编辑汇编语言源程序。
文件名.ASM
本实验程序目的:
在内存BUF1单元中存放一有符号数,判断此数的正负情况,并将正负情况存入BUF2中。
本实验结果为:
在内存BUF1中存放数字36,判断36正负为正即00000001,经补码显示为00000001存放到BUF2中。
DATASEGMENT
BUF1DB036H
BUF2DB?
DATAENDS
PROGRAMSEGMENT
ASSUMECS:
PROGRAM,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETBUF1
MOVDI,OFFSETBUF2
MOVAH,[BX]
ORAH,AH
JZZERO
JLMINUS
MOVAH,01H
JMPASSIGN
ZERO:
MOVAH,00H
JMPASSIGN
MINUS:
MOVAH,0FFH
ASSIGN:
MOV[DI],AH
MOVAH,4CH
INT21H
PROGRAMENDS
ENDSTART
文件名.ASM
对源程序进行汇编,根据提示输入三次文件名,分别得到目标代码文件:
文件名.OBJ;列表清单文件:
文件名.LST和交叉参考文件:
文件名.CRF。
如果出错重新汇编。
直到显示
0warningerrors
0seviererrors
Microsoft(R)MacroAssemblerVersion11/7/1318:
11:
31
Page1-1
10000DATASEGMENT
2000036BUF1DB036H
30001?
?
BUF2DB?
40002DATAENDS
50000PROGRAMSEGMENT
6ASSUMECS:
PROGRAM,DS:
DATA
70000B8----RSTART:
MOVAX,DATA
800038ED8MOVDS,AX
90005BB0000RMOVBX,OFFSETBUF1
100008BF0001RMOVDI,OFFSETBUF2
11000B8A27MOVAH,[BX]
12000D0AE4ORAH,AH
13000F7407JZZERO
1400117C0AJLMINUS
150013B401MOVAH,01H
160015EB0890JMPASSIGN
170018B400ZERO:
MOVAH,00H
18001AEB0390JMPASSIGN
19001DB4FFMINUS:
MOVAH,0FFH
20001F8825ASSIGN:
MOV[DI],AH
210021B44CMOVAH,4CH
220023CD21INT21H
230025PROGRAMENDS
24ENDSTART
Microsoft(R)MacroAssemblerVersion11/7/1318:
11:
31
Symbols-1
SegmentsandGroups:
NameLengthAlignCombineClass
DATA..............0002PARANONE
PROGRAM............0025PARANONE
Symbols:
NameTypeValueAttr
ASSIGN.............LNEAR001FPROGRAM
BUF1..............LBYTE0000DATA
BUF2..............LBYTE0001DATA
MINUS.............LNEAR001DPROGRAM
START.............LNEAR0000PROGRAM
ZERO..............LNEAR0018PROGRAM
@FILENAME...........TEXTXR
24SourceLines
24TotalLines
10Symbols
49212+399844Bytessymbolspacefree
0WarningErrors
0SevereErrors
文件名.OBJ
连接系统与目标文件,得到可执行文件:
文件名.EXE;和列表文件:
文件名.MAP。
通常不要选择连接库文件,直接回车即可。
LINK:
warningL4021:
nostacksegment
StartStopLengthNameClass
00000H00001H00002HDATA
00010H00034H00025HPROGRAM
Programentrypointat0001:
0000
4.调试过程:
F:
\DEBUGMASM5\文件名.EXE
-U0
1435:
0000B83414MOVAX,1434
1435:
00038ED8MOVDS,AX
1435:
0005BB0000MOVBX,0000
1435:
0008BF0100MOVDI,0001
1435:
000B8A27MOVAH,[BX]
1435:
000D0AE4ORAH,AH
1435:
000F7407JZ0018
1435:
00117C0AJL001D
1435:
0013B401MOVAH,01
1435:
0015EB08JMP001F
1435:
001790NOP
1435:
0018B400MOVAH,00
1435:
001AEB03JMP001F
1435:
001C90NOP
1435:
001DB4FFMOVAH,FF
1435:
001F8825MOV[DI],AH
-U
1435:
0021B44CMOVAH,4C
1435:
0023CD21INT21
1435:
00254DDECBP
1435:
0026FF8B5EFEDECWORDPTR[BP+DI+FE5E]
1435:
002A894710MOV[BX+10],AX
1435:
002DE94701JMP0177
1435:
0030FF7404PUSH[SI+04]
1435:
0033E83EFFCALLFF74
1435:
0036894510MOV[DI+10],AX
1435:
0039E93B01JMP0177
1435:
003C8B5EFEMOVBX,[BP-02]
1435:
003F8B05MOVAX,[DI]
-G=021
AX=0134BX=0000CX=0035DX=0000SP=0000BP=0000SI=0000DI=0001
DS=1434ES=1424SS=1434CS=1435IP=0021NVUPEIPLNZNAPENC
1435:
0021B44CMOVAH,4C
-DDS:
0
1434:
00003601000000000000-00000000000000006...............
1434:
0010B834148ED8BB0000-BF01008A270AE474.4..........'..t
1434:
0020077C0AB401EB0890-B400EB0390B4FF88.|..............
1434:
003025B44CCD214DFF8B-5EFE894710E94701%.L.!
M..^..G..G.
1434:
0040FF7404E83EFF8945-10E93B018B5EFE8B.t..>..E..;..^..
1434:
0050058B550239570275-0739077503E92701..'.
1434:
0060B82000E9D000807C-060075118B5EFE8B......|..u..^..
1434:
007047080B470A740680-7F1D08751B8B5EFEG.......u..^.
-Q
实验二汇编语言程序设计调试
一、 实验目的
为了深入理解汇编语言指令系统常用指令的含义,掌握汇编语言程序的编辑、连接和调试方法,用进行编程调试实验。
是在DOS环境下运行的一种功能很强的宏汇编程序,除具有一般汇编程序的功能外,还支持宏处理、条件汇编。
一、 实验方法
宏汇编语言系统只有数百K字节,主要由,,和四个文件组成,系统不需要安装。
由于Windows2000以上版本的操作系统没有MS-DOS方式,需从开始菜单的运行子菜单处键入CMD或COMMAND命令,进入命令行方式,设法进入汇编系统所在的文件夹子目录后。
操作过程如下:
1.EDIT文件名.ASM
程序功能:
进行各分数段的人数统计
结果是:
010002000100-030001000100
DATAREASEGMENT
GRADEDW56,69,84,82,73,88,99,63,100
NEQU($-GRADE)/2;统计GRADE中有多少个成绩
S5DW0;表示“低于60分”的人数
S6DW0;表示“60—69分”的人数
S7DW0;表示“70—79分”的人数
S8DW0;表示“80-89分”的人数
S9DW0;表示“90-99分”的人数
S10DW0;表示“100分”的人数
DATAREAENDS
PROGRAMSEGMENT
MAINPROCFAR
ASSUMECS:
PROGRAM,DS:
DATAREA
START:
PUSHDS
SUBAX,AX;将AX清零
PUSHAX
MOVAX,DATAREA;吧DATAREA的地址富裕AX
MOVDS,AX
MOVCX,N;循环次数
MOVBX,OFFSETGRADE;设置BX为指向GRADE的地址指针
COMPARE:
MOVAX,[BX];取GRADE中某一个成绩,判断是哪个级别
CMPAX,60;转到相应的程序段执行
JLFIVE
CMPAX,70
JLSIX
CMPAX,80
JLSEVEN
CMPAX,90
JLEIGHT
CMPAX,100
JNENINE
INCS10
JMPSHORTCHANGE
NINE:
INCS9;转到某个等级后,该等级的计数值加1
JMPSHORTCHANGE
EIGHT:
INCS8
JMPSHORTCHANGE
SEVEN:
INCS7
JMPSHORTCHANGE
SIX:
INCS6
JMPSHORTCHANGE
FIVE:
INCS5
CHANGE:
ADDBX,2;修改GRADE的地址指针,指向下一个成绩
LOOPCOMPARE
RET
MAINENDP
PROGRAMENDS
ENDSTART
进入编辑状态,编辑汇编语言源程序。
文件名.ASM
文件名.ASM
对源程序进行汇编,根据提示输入三次文件名,分别得到目标代码文件:
文件名.OBJ;列表清单文件:
文件名.LST和交叉参考文件:
文件名.CRF。
如果出错重新汇编。
直到显示
0warningerrors
0seviererrors
Microsoft(R)MacroAssemblerVersion11/7/1322:
54:
45
Page1-1
10000DATAREASEGMENT
200000038004500540052GRADEDW56,69,84,82,73,88,99,6
3,100
3004900580063003F
40064
5=0009NEQU($-GRADE)/2;统计GRA
DE中有多少个成绩
600120000S5DW0;表示“低于60分”?
娜耸?
700140000S6DW0;表示“60—69分”?
娜耸?
800160000S7DW0;表示“70—79分”?
娜耸?
900180000S8DW0;表示“80-89分”的
人数
10001A0000S9DW0;表示“90-99分”的
人数
11001C0000S10DW0;表示“100分”的人
数
12001EDATAREAENDS
130000PROGRAMSEGMENT
140000MAINPROCFAR
15ASSUMECS:
PROGRAM,DS:
DATAREA
16
17
1800001ESTART:
PUSHDS
1900012BC0SUBAX,AX;将AX清零
20000350PUSHAX
210004B8----RMOVAX,DATAREA;吧DATAREA的地
址富裕AX
2200078ED8MOVDS,AX
230009B90009MOVCX,N;循环次数
24000CBB0000RMOVBX,OFFSETGRADE;设置BX为指
向GRADE的地址指针
25
26
27000F8B07COMPARE:
MOVAX,[BX];取G
RADE中某一个成绩,判断是哪个级别
2800113D003CCMPAX,60;转?
较嘤Φ某绦蚨沃葱?
2900147C32JLFIVE
3000163D0046CMPAX,70
3100197C27JLSIX
32001B3D0050CMPAX,80
33001E7C1CJLSEVEN
3400203D005ACMPAX,90
3500237C11JLEIGHT
3600253D0064CMPAX,100
3700287506JNENINE
38002AFF06001CRINCS10
39002EEB1CJMPSHORTCHANGE
400030FF06001ARNINE:
INCS9;转到某个等
级后,该等级的计数值加1
Microsoft(R)MacroAssemblerVersion11/7/1322:
54:
45
Page1-2
410034EB16JMPSHORTCHANGE
420036FF060018REIGHT:
INCS8
43003AEB10JMPSHORTCHANGE
44003CFF060016RSEVEN:
INCS7
450040EB0AJMPSHORTCHANGE
460042FF060014RSIX:
INCS6
470046EB04JMPSHORTCHANGE
480048FF060012RFIVE:
INCS5
49004C83C302CHANGE:
ADDBX,2;修改GRADE的地址
指针,指向下一个成绩
50004FE2BELOOPCOMPARE
51
52
530051CBRET
540052MAINENDP
550052PROGRAMENDS
56ENDSTART
Microsoft(R)MacroAssemblerVersion11/7/1322:
54:
45
Symbols-1
SegmentsandGroups:
NameLengthAlignCombineClass
DATAREA............001EPARANONE
PROGRAM............0052PARANONE
Symbols:
NameTypeValueAttr
CHANGE.............LNEAR004CPROGRAM
COMPARE............LNEAR000FPROGRAM
EIGHT.............LNEAR0036PROGRAM
FIVE..............LNEAR0048PROGRAM
GRADE.............LWORD0000DATAREA
MAIN..............FPROC0000PROGRAMLength=0052
N...............NUMBER0009
NINE..............LNEAR0030PROGRAM
S10..............LWORD001CDATAREA
S5...............LWORD0012DATAREA
S6...............LWORD0014DATAREA
S7...............LWORD0016DATAREA
S8...............LWORD0018DATAREA
S9...............LWORD001ADATAREA
SEVEN.............LNEAR003CPROGRAM
SIX..............LNEAR0042PROGRAM
START.............LNEAR0000PROGRAM
@FILENAME...........TEXTXR
54SourceLines
54TotalLines
21Symbols
49174+399914Bytessymbolspacefree
0WarningErrors
0SevereErrors
文件名.OBJ
连接系统与目标文件,得到可执行文件:
文件名.EXE;和列表文件:
文件名.MAP。
通常不要选择连接库文件,直接回车即可。
LINK:
warningL4021:
nostacksegment
StartStopLengthNameClass
00000H0001DH0001EHDATAREA
00020H00071H00052HPROGRAM
Programentrypointat0002:
0000
4.调试过程:
F:
\DEBUGMASM5\文件名.EXE
-U0
1434:
00001EPUSHDS
1434:
00012BC0SUBAX,AX
1434:
000350PUSHAX
1434:
0004B83214MOVAX,1432
1434:
00078ED8MOVDS,AX
1434:
0009B90900MOVCX,0009
1434:
000CBB0000MOVBX,0000
1434:
000F8B07MOVAX,[BX]
1434:
00113D3C00CMPAX,003C
1434:
00147C32JL0048
1434:
00163D4600CMPAX,0046
1434:
00197C27JL0042
1434:
001B3D5000CM