《微机原理与汇编语言程序设计》实验指导书 溢出 方向 中断 符号 零 辅助进位 奇偶 进位 0 NV UP DI PL NZ NA PO NC Ov DN EI NG ZR AC PE CY b)-RAX:显示指定的AX寄存器当前的内容,并等待键入新值:如果不作修改, 可直接回车。如: -RAX AX0000 :1234 c)-RF:显示标志寄存器F各个标志位的内容,并等待键入新的标志位:如果不作 修改,可直接回车。如: -RF NVUPEIPLNZNA PONC -ZR 3)运行命令G:使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。 )-G:控制程序由当前P处运行,直至程序结束。如果当前P为初始值,其作用 则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况。 b)-G0123¥:控制程序由当前P处运行,直至指定的断点P-O123H处,程序暂停, 显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“.”下。如对 TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至000A 处: -G00041 AX=09B6BX=0000 CX=0020DX=0000SP=0000BP=0000S=0000D=0000 DS=12B6 ES=12A6 SS=12B6 CS=12B7 IP=000A NV UP EI PL NZ NA PO NC 12B7:000ACD21 INT 21 断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、 缓冲区、标志等)来判断程序是否运行正确。 4)单步命令T:控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令, 然后返回DEBUG提示符“.”下。如对TEST.EXE,若当前P为初始值,则键入T 命令后有如下显示: -TY AX=12B6BX=0000CX=0020DX=0000SP=0000BP=0000SI=0000DI=0000 DS=12A6 ES=12A6 SS=12B6 CS=12B7 IP-0003 NV UP EI PLNZ NA PO NC 12B7:00038ED8 MOV DS,AX 单步命令一般用于需对程序运行作仔细分析的地方,如判断分支转移、观察运算结果等。 若能综合运用断点及单步指令,则可大大提高DEBUG调试的速度及效率。但应注意,当P 指针位于NT21H一类指令处时,执行T命令将会使程序进入该功能调用子程序中,因此, 3
《微机原理与汇编语言程序设计》实验指导书 3 溢出 方向 中断 符号 零 辅助进位 奇偶 进位 0 NV UP DI PL NZ NA PO NC 1 OV DN EI NG ZR AC PE CY b) -R AX↘:显示指定的 AX 寄存器当前的内容,并等待键入新值;如果不作修改, 可直接回车。如: -R AX↘ AX 0000 :1234↘ - c) -R F↘:显示标志寄存器 F 各个标志位的内容,并等待键入新的标志位;如果不作 修改,可直接回车。如: -R F↘ NV UP EI PL NZ NA PO NC -ZR↘ - 3) 运行命令 G:使程序在 DEBUG 控制下运行,一般有全程、断点运行两种方式。 a) -G↘:控制程序由当前 IP 处运行,直至程序结束。如果当前 IP 为初始值,其作用 则相当于直接在 DOS 下运行程序,一般用于快速观察程序的运行情况。 b) -G 0123↘:控制程序由当前 IP 处运行,直至指定的断点 IP=0123H 处,程序暂停, 显示各个寄存器的当前值及断点处指令,然后返回 DEBUG 提示符“-”下。如对 TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至 000A 处: -G 000A↘ AX=09B6 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12B6 ES=12A6 SS=12B6 CS=12B7 IP=000A NV UP EI PL NZ NA PO NC 12B7:000A CD21 INT 21 - 断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、 缓冲区、标志等)来判断程序是否运行正确。 4) 单步命令 T:控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令, 然后返回 DEBUG 提示符“-”下。如对 TEST.EXE,若当前 IP 为初始值,则键入 T 命令后有如下显示: -T↘ AX=12B6 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12A6 ES=12A6 SS=12B6 CS=12B7 IP=0003 NV UP EI PL NZ NA PO NC 12B7:0003 8ED8 MOV DS,AX - 单步命令一般用于需对程序运行作仔细分析的地方,如判断分支转移、观察运算结果等。 若能综合运用断点及单步指令,则可大大提高 DEBUG 调试的速度及效率。但应注意,当 IP 指针位于 INT 21H 一类指令处时,执行 T 命令将会使程序进入该功能调用子程序中,因此
《微机原理与汇编语言程序设计》实验指导书 这种情况下最好不用T命令,而用断点运行命令跳过该类功能调用指令。 5)显示内存命令D:以十六进制及ASCⅡ两种方式显示内存区的二进制数据,通常用来 观察数据段内的缓冲区内容。一般常用以下二种形式: )-D:从0000单元开始,连续显示128个内存单元的内容,如果继续键入D命令, 则继续显示后128个单元内容。如对TEST.EXE,若想观察字符串显示时的字符串 内容是否正确,则可在程序断点运行至000A处,键入D命令: -D DS:0 12B6:000048656C6C6F2C576F-726C642124000000 Hello,World!$. 12B6:0010B8B6128ED8BA0000-B409CD21B44CCD21.L.I 12B6:0020EB518B867AFF2BC6-40508A460898508B.Q.z.+.@P.F.P 12B6:007083C4028B5E048A07-2AE489867AFF3BC6 八*Z.; 在上例中,128个单元分成8行,每行16个单元,每个单元的内容分别以十六进制形式 和ASCI码形式显示。如果该单元的内容不是可显示字符,则在ASC区内显示为“.”。 b)-D01230143y:从指定的0123单元开始显示,直至指定的0143单元结束。 6)汇编命令A:用于在DEBUG环境下直接键入汇编语言语句、生成较简单的可执行代 码而不必经过完整的汇编语言编程步骤,或者用来在调试过程中临时修改某条指令。 如: -4Y 127D:0100 MOV AH,02 127D:0102 MOV AL,64 127D:0104WT 21 127D:0106 入¥ -A0102¥ 127D:0102MOp DL,6A 127D:0104 当键入汇编命令A后,将从当前P或指定地址处提示输入汇编语句,每输入一条语句, DEBUG将其汇编成机器码,并存入相应的存储单元中,然后地址自动增加,继续提示输入下 一条语句:如果直接▣车,则结束汇编命令。特别应注意的是,DBG默认使用十六进制,放 在输入时不能使用H。 7)装载命令L:用来将被调试程序重新装载进内存中,一般用于程序运行结束后需继续 调试程序时,或需从头开始调试程序时。如对TEST.EXE: -G¥ Hello.World! Program terminated normally -L¥ 8)退出命令Q:键入此命令,即退出DEBUG状态,返回DOS。 4
《微机原理与汇编语言程序设计》实验指导书 4 这种情况下最好不用 T 命令,而用断点运行命令跳过该类功能调用指令。 5) 显示内存命令 D:以十六进制及 ASCII 两种方式显示内存区的二进制数据,通常用来 观察数据段内的缓冲区内容。一般常用以下二种形式: a) -D↘:从 0000 单元开始,连续显示 128 个内存单元的内容,如果继续键入 D 命令, 则继续显示后 128 个单元内容。如对 TEST.EXE,若想观察字符串显示时的字符串 内容是否正确,则可在程序断点运行至 000A 处,键入 D 命令: -D DS:0↘ 12B6:0000 48 65 6C 6C 6F 2C 57 6F-72 6C 64 21 24 00 00 00 Hello,World!$... 12B6:0010 B8 B6 12 8E D8 BA 00 00-B4 09 CD 21 B4 4C CD 21 ...........!.L.! 12B6:0020 EB 51 8B 86 7A FF 2B C6-40 50 8A 46 08 98 50 8B .Q..z.+.@P.F..P. „„ „„ 12B6:0070 83 C4 02 8B 5E 04 8A 07-2A E4 89 86 7A FF 3B C6 ....^...*...z.;. - 在上例中,128 个单元分成 8 行,每行 16 个单元,每个单元的内容分别以十六进制形式 和 ASCII 码形式显示。如果该单元的内容不是可显示字符,则在 ASCII 区内显示为“.”。 b) –D 0123 0143↘:从指定的 0123 单元开始显示,直至指定的 0143 单元结束。 6) 汇编命令 A:用于在 DEBUG 环境下直接键入汇编语言语句、生成较简单的可执行代 码而不必经过完整的汇编语言编程步骤,或者用来在调试过程中临时修改某条指令。 如: -A↘ 127D:0100 MOV AH,02↘ 127D:0102 MOV AL,6A↘ 127D:0104 INT 21↘ 127D:0106 ↘ -A 0102↘ 127D:0102 MOV DL,6A↘ 127D:0104 ↘ - 当键入汇编命令 A 后,将从当前 IP 或指定地址处提示输入汇编语句,每输入一条语句, DEBUG 将其汇编成机器码,并存入相应的存储单元中,然后地址自动增加,继续提示输入下 一条语句;如果直接回车,则结束汇编命令。特别应注意的是,DEBUG 默认使用十六进制,故 在输入时不能使用 H。 7) 装载命令 L:用来将被调试程序重新装载进内存中,一般用于程序运行结束后需继续 调试程序时,或需从头开始调试程序时。如对 TEST.EXE: -G↘ Hello,World! Program terminated normally -L↘- 8) 退出命令 Q:键入此命令,即退出 DEBUG 状态,返回 DOS
《微机原理与汇编语言程序设计》实验指导书 实验二汇编语言上机基本步骤 一、实验目的: 熟悉汇编语言的上机过程,掌握各项工具软件的使用方法 二、实验环境 1.硬件:PC微机 2.软件:DOS系统、EDIT.EXE、MASM.EXE、LNK.EXE、DEBUG.EXE 三、实验内容: 1.前期准备: 在开始进行汇编语言上机练习之前,建立并进入自己的工作子目录,准备好相关工具软 件如MASM.EXE、LNK.EXE等,其后所有工作均在自己的子目录中进行,以避免因路径概 念不清而导致的文件存取错误,以及对系统其它部分造成影响。 1)建立自己的工作子目录(例如MYTEST): C:MD MYTEST 2)进入自己的工作子目录: C:-CD MYTEST 3) 将所需工具软件从其它地方(如C:MASM)拷贝进自己的工作子目录: C:\MYTEST>COPY C:MASMMASM.EXE CAMYTEST-COPY C:IMASMLINK EXE 2.编写源程序: 原则上可以用任何文字处理软件(如EDT、写字板、甚至WORD)编写源程序,但必须 注意,源程序应为ASCI码文件(或称纯文本文件),扩展名一般为.ASM。因此,建议使用 DOS环境下的EDIT软件。 I)在DOS系统操作提示符下键入EDIT并回车,即可进入EDIT文本编辑环境。如果 没有进入,检查当前路径下是否存在EDIT.EXE文件,以及文件是否完整等。 2)从键盘输入下列程序(不必输入注释部分): CODE SEGMENT :定义一个CODE段 ASSUME CS:CODE ;定义CODE段为代码段 START: :可执行语句起始处 MOV AH,02H ;以下三条语句将显示字母a MOV DL,'a' INT 21H MOV AH,4CH ;以下二条语句将返回DOS INT 21H CODE ENDS :CODE段结束 END START ;整个程序结束 该程序的功能是仅在CT屏上显示一个字母a,完成功能的只有其中的三条语句,但其 它部分则是一个完整的汇编语言源程序必不可少的部分。 3)存盘退出EDT文本编辑环境。在存盘时应将文件的扩展名确定为.ASM(如 5
《微机原理与汇编语言程序设计》实验指导书 5 实验二 汇编语言上机基本步骤 一、实验目的: 熟悉汇编语言的上机过程,掌握各项工具软件的使用方法 二、实验环境 1. 硬件:PC 微机 2. 软件:DOS 系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容: 1. 前期准备: 在开始进行汇编语言上机练习之前,建立并进入自己的工作子目录,准备好相关工具软 件如 MASM.EXE、LINK.EXE 等,其后所有工作均在自己的子目录中进行,以避免因路径概 念不清而导致的文件存取错误,以及对系统其它部分造成影响。 1) 建立自己的工作子目录(例如 MYTEST): C:\>MD MYTEST 2) 进入自己的工作子目录: C:\>CD MYTEST 3) 将所需工具软件从其它地方(如 C:\MASM)拷贝进自己的工作子目录: C:\MYTEST>COPY C:\MASM\MASM.EXE C:\MYTEST>COPY C:\MASM\LINK.EXE 2. 编写源程序: 原则上可以用任何文字处理软件(如 EDIT、写字板、甚至 WORD)编写源程序,但必须 注意,源程序应为 ASCII 码文件(或称纯文本文件),扩展名一般为.ASM。因此,建议使用 DOS 环境下的 EDIT 软件。 1) 在 DOS 系统操作提示符下键入 EDIT 并回车,即可进入 EDIT 文本编辑环境。如果 没有进入,检查当前路径下是否存在 EDIT.EXE 文件,以及文件是否完整等。 2) 从键盘输入下列程序(不必输入注释部分): CODE SEGMENT ;定义一个 CODE 段 ASSUME CS:CODE ;定义 CODE 段为代码段 START: ;可执行语句起始处 MOV AH,02H ;以下三条语句将显示字母 a MOV DL,’a’ INT 21H MOV AH,4CH ;以下二条语句将返回 DOS INT 21H CODE ENDS ;CODE 段结束 END START ;整个程序结束 该程序的功能是仅在 CRT 屏上显示一个字母 a,完成功能的只有其中的三条语句,但其 它部分则是一个完整的汇编语言源程序必不可少的部分。 3) 存盘退出 EDIT 文本编辑环境。在存盘时应将文件的扩展名确定为.ASM(如
《微机原理与汇编语言程序设计》实验指导书 TEST.ASM),并注意存盘的路径,最好与EDIT、MASM、LNK等软件相同。 4)在DOS系统提示符下利用DR命令检查TEST.ASM文件是否确实产生。 3.汇编: 利用MASM.EXE宏汇编程序,将己经存盘的ASCI码源程序翻译成二进制目标程序,其 扩展名一般为.OBJ。 1)操作方法:假定当前工作路径为C:MYTEST>,且所需文件均存在于当前路径,则 针对源程序TEST.ASM的汇编有以下三种方法(其中斜体部分由键盘输入): a)C:\MYTEST>MASM.EXE Microsoft(R)Macro Assembler Version 5.00 Copyright(C)Microsoft Corp 1981-1985,1987.All rights reserved. Source filename [.ASM]:TEST Object filename [TEST.OBJ]:\ Source listing [NUL.LST]: Cross-reference [NUL.CRF]: 51524+435132 Bytes symbol space free 0 Warning Errors 0 Severe Errors b)C:\MYTEST>MASM TEST.ASM Microsoft(R)Macro Assembler Version 5.00 Copyright(C)Microsoft Corp 1981-1985,1987.All rights reserved. Object filename [TEST.OBJ]: Source listing [NUL.LST]: Cross-reference [NUL.CRF]: 51524+435132 Bytes symbol space free 0 Warning Errors 0 Severe Errors c)C:\MYTEST>MASM TEST: Microsoft(R)Macro Assembler Version 5.00 Copyright(C)Microsoft Corp 1981-1985,1987.All rights reserved. 51524+435132 Bytes symbol space free 0 Warning Errors 0 Severe Errors 2)在上述三种方法中,推荐使用第三种,但是必须满足以下要求: a)所有文件均位于当前工作路径下。 b)源程序扩展名为.ASM,目标程序扩展名为.OBJ。 3)若源程序有语法错误,则汇编结束将给出提示信息,并依次列出错误出现的行号及性 质。这时,应重新进入EDT文本编辑环境中,根据提示对源程序进行修改,然后 重新存盘、汇编。只有所有错误为0,才能得到正确的目标文件。注意该步骤只能 检查出语法错误,对设计思想上的错误,应通过调试才能检查出来。 4)汇编结束后,检查是否产生相应日标程序TEST.OBJ。 6
《微机原理与汇编语言程序设计》实验指导书 6 TEST.ASM),并注意存盘的路径,最好与 EDIT、MASM、LINK 等软件相同。 4) 在 DOS 系统提示符下利用 DIR 命令检查 TEST.ASM 文件是否确实产生。 3. 汇编: 利用 MASM.EXE 宏汇编程序,将已经存盘的 ASCII 码源程序翻译成二进制目标程序,其 扩展名一般为.OBJ。 1) 操作方法:假定当前工作路径为 C:\MYTEST>,且所需文件均存在于当前路径,则 针对源程序 TEST.ASM 的汇编有以下三种方法(其中斜体部分由键盘输入): a) C:\MYTEST>MASM.EXE↘ Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. Source filename [.ASM]:TEST↘ Object filename [TEST.OBJ]:↘ Source listing [NUL.LST]:↘ Cross-reference [NUL.CRF]:↘ 51524 + 435132 Bytes symbol space free 0 Warning Errors 0 Severe Errors b) C:\ MYTEST >MASM TEST.ASM↘ Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. Object filename [TEST.OBJ]:↘ Source listing [NUL.LST]:↘ Cross-reference [NUL.CRF]:↘ 51524 + 435132 Bytes symbol space free 0 Warning Errors 0 Severe Errors c) C:\ MYTEST >MASM TEST;↘ Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. 51524 + 435132 Bytes symbol space free 0 Warning Errors 0 Severe Errors 2) 在上述三种方法中,推荐使用第三种,但是必须满足以下要求: a) 所有文件均位于当前工作路径下。 b) 源程序扩展名为.ASM,目标程序扩展名为.OBJ。 3) 若源程序有语法错误,则汇编结束将给出提示信息,并依次列出错误出现的行号及性 质。这时,应重新进入 EDIT 文本编辑环境中,根据提示对源程序进行修改,然后 重新存盘、汇编。只有所有错误为 0,才能得到正确的目标文件。注意该步骤只能 检查出语法错误,对设计思想上的错误,应通过调试才能检查出来。 4) 汇编结束后,检查是否产生相应目标程序 TEST.OBJ
《微机原理与汇编语言程序设计》实验指导书 4.连接: 利用LNK.EXE连接程序,将二进制目标程序整理成DOS系统下的可执行程序,其扩展 名必须为.EXE。 1)操作方法:与汇编相似,可有多种形式,一般使用: C:\MYTEST>LINK TEST: 但需注意这时的TEST应是.TEST.OBJ文件。 2)在得到正确的.OBJ文件后,该步骤一般不会出现问题,但可能会出现下列提示: LINK:warning L4021:no stack segment 针对该提示,可不予理会。 3)连接结束后,检查是否产生相应的可执行程序TEST.EXE。 5.运行: 1)如果没有问题,生成的可执行程序TEST.EXE即可以象其它DOS外部命令一样,直 接在DOS系统下运行,整个编程工作完成。如在本实验中: C:\MYTEST>TEST 2)一般在编写较复杂的程序时,可能出现设计上的错误。如果不能在源程序中检查出错 误,则必须通过DEBUG调试,才能检查出错误所在,然后再回到前面的各个步骤 中重复操作。在本实验中,由于程序简单,可以不必调试。 四、练习 对实验程序进行由浅及深的修改,领会上机的各个步骤及注意事项。 实验三 基本程序设计 一、实验目的 学习顺序、分支、循环三种基本结构的程序设计方法 二、实验环境 1.硬件:PC微机 2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容 1.编写程序,要求对键盘输入的小写英文字母用相应大写英文字母显示,如键盘输入“a”, 则显示“A”。 2.编写程序,若键盘输入小写字母,则用相应大写字母显示:反之,若键盘输入大写字母, 则用相应小写字母显示。 3.编写程序,循环实现上述程序2的功能,直至键盘输入任一非英文字符,程序停止。 四、练习
《微机原理与汇编语言程序设计》实验指导书 7 4. 连接: 利用 LINK.EXE 连接程序,将二进制目标程序整理成 DOS 系统下的可执行程序,其扩展 名必须为.EXE。 1) 操作方法:与汇编相似,可有多种形式,一般使用: C:\ MYTEST >LINK TEST;↘ 但需注意这时的 TEST 应是.TEST.OBJ 文件。 2) 在得到正确的.OBJ 文件后,该步骤一般不会出现问题,但可能会出现下列提示: LINK:warning L4021:no stack segment 针对该提示,可不予理会。 3) 连接结束后,检查是否产生相应的可执行程序 TEST.EXE。 5. 运行: 1) 如果没有问题,生成的可执行程序 TEST.EXE 即可以象其它 DOS 外部命令一样,直 接在 DOS 系统下运行,整个编程工作完成。如在本实验中: C:\ MYTEST >TEST↘ 2) 一般在编写较复杂的程序时,可能出现设计上的错误。如果不能在源程序中检查出错 误,则必须通过 DEBUG 调试,才能检查出错误所在,然后再回到前面的各个步骤 中重复操作。在本实验中,由于程序简单,可以不必调试。 四、练习 对实验程序进行由浅及深的修改,领会上机的各个步骤及注意事项。 实验三 基本程序设计 一、实验目的 学习顺序、分支、循环三种基本结构的程序设计方法 二、实验环境 1. 硬件:PC 微机 2. 软件:DOS 系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容 1. 编写程序,要求对键盘输入的小写英文字母用相应大写英文字母显示,如键盘输入“a”, 则显示“A”。 2. 编写程序,若键盘输入小写字母,则用相应大写字母显示;反之,若键盘输入大写字母, 则用相应小写字母显示。 3. 编写程序,循环实现上述程序 2 的功能,直至键盘输入任一非英文字符,程序停止。 四、练习