文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言源程序的编辑、汇编、连接的方法

汇编语言源程序的编辑、汇编、连接的方法

汇编语言源程序的编辑、汇编、连接的方法一、编辑源程序

汇编语言源程序:用汇编语句编写的解决应用问题的程序。

汇编程序:将汇编语言源程序翻译成机器语言程序的系统。

汇编:将汇编语言程序翻译成机器语言程序的过程。

在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。

(1)编辑软件

行编辑软件:https://www.wendangku.net/doc/5419309901.html,

全屏编辑软件:WPS、https://www.wendangku.net/doc/5419309901.html,、https://www.wendangku.net/doc/5419309901.html,、WORD、PE等。

当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。

(2)汇编程序

有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。

(3)连接程序

用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。

(4)辅助工具程序(.EXE)

进行汇编语言程序调试和文件格式转换的程序有:

https://www.wendangku.net/doc/5419309901.html, 动态调试程序

EXE2BIN.EXE 文件格式转换程序

CREF.EXE 交叉引用程序

编辑、汇编、连接、调试过程如图1.1所示。

TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。

二、汇编源程序

用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。为此,需键入:

C:>MASM <源文件名>

或C:>MASM

按前一种格式键入,屏幕上显示:

Microsoft(R) Macro assemble V ersion 5.00

Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reserved

OBJ filename[.obj]:

Source listing[nul.lst]:

Cross-reference[nul.crf]:

以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。

汇编后生成以下几个文件:

(1).OBJ文件

.OBJ文件是必须生成的一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个.OBJ文件,供下一步连接用。

若源程序有语法错误时,会出现错误信息提示:

源程序文件行错误信息代码错误说明信息

最后信息提示:

××Warning e rrors (警告错误)

××Severe errors (严重错误)

若严重错误总数不为0,则.OBJ文件没有生成,需回到编辑状态下修改源程序直到无错为止。

(2).LST文件(列表文件)

.LST文件对调试程序有帮助,它是将源程序中各语句及其对应的目标代码和符号表以清单方式列出,如果需要,在屏幕显示的第二个提问的冒号后输入文件名即可,如果不需要,直接按回车键。

(3).CRF文件(交叉引用文件)

交叉引用.CRF文件给出了源程序中定义的符号引用情况,按字母顺序排列。.CRF文件不可显示,须用CREF.EXE系统程序将.CRF文件转换成为.REF文件后方可显示输出。

若按后一种格式输入,系统会依次出现四个提示信息,比第一种格式多了一项源程序文件名的输入。应答方式与第一种格式相同。

三、连接目标程序

汇编后生成的.OBJ文件,其所有目标代码的地址都是浮动的偏移地址,机器不能直接运行。必须用连接程序(LINK.EXE)对其进行连接装配定位,产生.EXE可执行文件,方可运行。

在系统提示符下键入:LINK <源程序文件名> 或LINK

屏幕上出现以下提示信息:

Microsoft(R) Macro assemble V ersion 5.00

Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reserved

Run file [.EXE]:

List File [nul.map]:

Libraries [.lib]:

连接后,可生成两种文件:.EXE和.MAP

(1).EXE文件(可执行文件)

若采用方括号中的默认值,直接按回车键,否则需重新输入一文件名。

若连接过程中无错误,则自动在当前工作盘生成.EXE文件。若有错误,则会给出错误信息提示,

这时必须重新修改源程序,再汇编、连接。

(2).MAP(连接映像文件)

(3).LIB库文件

连接程序询问是否使用某种库文件,不需使用库文件直接按回车键。

(4)若要连接多个模块目标程序,可用“+”把它们连接起来。

如:LINK files1+files2+files3

若直接键入:LINK会依次出现四个提示信息,应答方式应与LINK<源程序文件>相同,仅增加了一项输出,询问被连接的目标文件名字:Object Modeules[.OBJ]:

格式:LINK ;多了一个分号,表示结束后续询问。

四、运行程序

经过汇编、连接后生成的.EXE文件,可在DOS系统直接运行,只要键入相应的文件名即可。如:C:\MASM><文件名>

DOS的https://www.wendangku.net/doc/5419309901.html,模块将该程序装配到内存,并设置和分配启动地址。也可在DEBUG 调试程序下运行。如何用DEBUG程序来运行和调试程序将在DEBUG调试程序中详细讨论。

五、DEBUG调试程序

DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。

1)DEBUG程序使用

在DOS提示符下键入命令:

C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]

这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG进行程序调试。若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG程序调入内存后,再由DEBUG将指定的文件名装入内存。

2)DEBUG的常用命令

(1)汇编命令 A

格式:A[起始地址]

功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。若缺省起始地址,则从当前CS:100地址开始存放。A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。

(2)反汇编命令U

格式1:U[起始地址]

格式2:U[起始地址][结束地址|字节数]

功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。

格式2将指定范围的内存单元中的目标代码转换成汇编指令。

(3)显示、修改寄存器命令R

格式:R[寄存器名]

功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。

AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000

DI=0000 DS=3000 ES=23A0 CS=138E IP=0000

NV UP DI PL NZ NA PO NC

138E:0000 MOV AX,1234

-R AX ;输入命令

AX 0014 ;显示AX的内容

:;供修改,不修改按回车。

若对标志寄存器进行修改,输入:-RF

屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。

NV UP DI PL NZ NA PO NC

不修改按回车键。要修改需个别输入一个或多个此标志的相反值,再按回车键。R命令只能显

示、修改16位寄存器。

(4)显示存储单元命令 D

格式1:D[起始地址]

格式2:D[起始地址][结束地址|字节数]

功能:格式1从起始地址开始按十六进制显示80H个单元的内容,每行16个单元,共8行,每行右边显示16个单元的ASCII码,不可显示的ASCII码则显示“·”。格式2显示指定范围内存储单元的内容,其他显示方式与格式1一样。如果缺省起始地址或地址范围,则从当前的地址开始按格式1显示。

例如:-D 200 ;表示从DS:0200H开始显示128个单元内容

-D 100 120 ;表示显示DS:0100-DS:0120单元的内容

说明:在DEBUG中,地址表示方式有如下形式:

段寄存器名:相对地址,如:DS:100

段基值:偏移地址(相对地址),如:23A0:1500

(5)修改存储单元命令 E

格式1:E[起始地址] [内容表]

格式2:E[地址]

功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。

例如:—E DS:0100 'V AR' 12 34

表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为

'V'、'A'、'R'、12H、34H。

格式2是逐个修改指定地址单元的当前内容。

如:—E DS:0010

156F:0010 41.5F

其中156F:0010单元原来的值是41H,5FH为输入的修改值。若只修改一个单元的内容,这时按回车键即可;若还想继续修改下一个单元内容,此时应按空格键,就显示下一个单元的内容,需

修改就键入新的内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元的内容。

(6)运行命令G

格式:G[=起始地址][第一断点地址[第二断点地址……]]

功能:CPU从指定起始地址开始执行,依次在第一、第二等断点处中断。若缺省起始地址,则从当前CS:IP指示地址开始执行一条指令。最多可设置10个断点。

(7)跟踪命令T

格式:T[起始地址][正整数]

功能:从指定地址开始执行‘正整数’条指令,若缺省‘正整数’,表示执行一条指令,若两项都缺省,表示从当前CS:IP指示地址开始执行一条指令。

(8)指定文件命令N

格式:N<文件名或扩展名>

功能:指定即将调入内存或从内存写入磁盘的文件名。该命令应该用在L命令和W命令之前。

(9)装入命令L

格式1:L[起始地址][盘符号][扇区号][扇区数]

格式2:L[起始地址]

功能:格式1根据盘符号,将指定扇区的内容装入到指定起始地址的存储区中。

格式2将N命令指出的文件装入到指定起始地址的存储区中,若省略起始地址,则装入到CS:100处或按原来文件定位约定装入到相应位置。

(10)写磁盘命令W

格式1:W<起始地址>[驱动器号]<起始扇区><扇区数>

格式2:W[起始地址]

功能:格式1把指定地址开始的内容数据写到磁盘上指定的扇区中。

格式2将起始地址的BX×10000H+CX个字节内容存放到由N命令指定的文件中。在格式2的W命令之前,除用N命令指定存盘的文件名外,还必须将要写的字节数用R命令送入BX和CX中。

(11)退出命令Q

格式:Q

功能:退出DEBUG,返回到操作系统。

以上介绍的是DEBUG常用命令,其他命令请参考有关书籍。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法 汇编语言是一种底层的程序设计语言,直接操作计算机硬件。在编写 汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的 正确性和可靠性。下面是关于汇编语言的编程步骤和调试方法的一些详细 介绍。 一、编程步骤: 1.定义程序目标:明确程序的功能、输入和输出。 2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。 3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。 4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言 程序。 5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。 6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。 7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。 8.优化和改进:根据测试结果,对程序进行优化和改进。 二、调试方法: 1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些 关键的变量或标志位,以便观察程序的执行路径和结果。

2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。 3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和 存储器的变化情况,以确定代码逻辑是否正确。 4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以 观察关键变量和代码的执行情况,以帮助调试。 5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。 6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的 调试,以排查错误。 三、汇编程序调试常见问题及解决方法: 1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是 否正确,以及循环内的寄存器和内存操作是否正确。 2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。 3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用, 尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。 4.数据错误:检查程序中对数据处理的算法和逻辑是否正确,尤其是 涉及到数据类型转换和数据移位的操作。 5.输入和输出问题:检查程序中输入和输出的读写操作是否正确,以 及相关的数据类型和格式是否匹配。

汇编语言源程序的编辑、汇编、连接的方法

汇编语言源程序的编辑、汇编、连接的方法一、编辑源程序 汇编语言源程序:用汇编语句编写的解决应用问题的程序。 汇编程序:将汇编语言源程序翻译成机器语言程序的系统。 汇编:将汇编语言程序翻译成机器语言程序的过程。 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。 (1)编辑软件 行编辑软件:https://www.wendangku.net/doc/5419309901.html, 全屏编辑软件:WPS、https://www.wendangku.net/doc/5419309901.html,、https://www.wendangku.net/doc/5419309901.html,、WORD、PE等。 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。 (2)汇编程序 有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。 (3)连接程序 用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。 (4)辅助工具程序(.EXE) 进行汇编语言程序调试和文件格式转换的程序有: https://www.wendangku.net/doc/5419309901.html, 动态调试程序 EXE2BIN.EXE 文件格式转换程序 CREF.EXE 交叉引用程序 编辑、汇编、连接、调试过程如图1.1所示。

TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。 二、汇编源程序 用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。为此,需键入: C:>MASM <源文件名> 或C:>MASM 按前一种格式键入,屏幕上显示: Microsoft(R) Macro assemble V ersion 5.00 Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reserved OBJ filename[.obj]: Source listing[nul.lst]: Cross-reference[nul.crf]: 以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。 汇编后生成以下几个文件: (1).OBJ文件 .OBJ文件是必须生成的一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个.OBJ文件,供下一步连接用。 若源程序有语法错误时,会出现错误信息提示: 源程序文件行错误信息代码错误说明信息 最后信息提示:

汇编语言上机过程

汇编语言程序的上机过程 一、上机环境 要运行调试汇编语言程序,至少需要以下程序文件: ?编辑程序:https://www.wendangku.net/doc/5419309901.html,或其他文本编辑工具软件,用于编辑源程序。 ?汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。 ?连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。 ?调试程序:DEBUG.EXE,用于调试可执行程序。 二、上机过程 汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。 1.编辑源程序 用文本编辑软件创建、编辑汇编源程序。常用编辑工具有:https://www.wendangku.net/doc/5419309901.html,、记事本、Word等。 无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。 2.汇编 用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。 汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件; 展开宏指令。 汇编过程如下: 在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。 此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。 Object Filename [MYFILE.OBJ]: Source Listing [Nul.LST]: Cross Reference [Nul.CRF]: 依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。此时,需要进行修改,然后再进行汇编。 如此进行,直至汇编无错误,得到目标文件为止。

汇编语言源程序的运行过程

汇编语言源程序的运行过程 汇编语言是一种低级别的编程语言,它与计算机硬件直接相关。它通常被用于编写硬件驱动程序、嵌入式系统和最底层的操作系统等。 下面是汇编语言源程序的运行过程,涵盖了编译、链接、装载和执行等主要步骤。 1.编写源代码:汇编语言程序通常由汇编指令和伪指令组成。汇编指令是一种与机器指令对应的易于阅读和理解的符号表示方式。伪指令是一种用于声明和初始化变量、存储常量以及定义程序控制结构的特殊指令。 2.编译:汇编语言源代码需要通过汇编器进行编译,将其转换成机器可执行的目标代码。汇编器将汇编指令转换成机器码,并生成与每条指令对应的目标代码。 3.链接:汇编语言源程序中可能会引用一些外部的函数或库。在链接阶段,连接器将目标代码和外部函数的实现链接在一起,形成最终的可执行文件。链接的目的是解决程序中的符号引用,保证被引用的函数能被正确执行。 4.装载:在执行之前,操作系统需要将可执行文件装载到内存中。装载器会通过分析可执行文件的结构,并将代码、数据和栈等部分装入合适的内存位置,以便程序能够正常运行。 5.执行:装载后,汇编语言程序开始执行。CPU从程序的入口地址开始执行第一条指令。指令由操作码和操作数组成,操作码用于指示要执行的操作类型,操作数则提供了相关的数据。依次执行每条指令,程序按照预定的算法和逻辑运行。

在执行过程中,程序可能需要和外部设备或其他软件交互,具体的输 入和输出操作会通过中断和系统调用等机制进行。中断可以触发特定的处 理程序,用于处理硬件设备的输入输出或异常情况的处理。系统调用允许 程序通过操作系统提供的功能来进行输入输出、内存管理和进程调度等操作。 总的来说,汇编语言源程序的运行过程包括编写源代码、编译、链接、装载和执行。这个过程关系到程序从开发到运行的相关步骤,每个步骤都 需要严格的处理,以确保程序能够正确运行,并与外部环境进行良好的交互。

汇编语言程序运行步骤

汇编语言程序运行步骤 汇编语言是一种低级程序设计语言,用于编写计算机的指令集。在使用汇编语言编写程序时,需要经历一系列的步骤,从编辑源代码到最终的程序运行。本文将详细介绍汇编语言程序的运行步骤。 步骤一:编辑源代码 汇编语言程序的第一步是编辑源代码。在该步骤中,我们使用文本编辑器来编写程序的源代码。源代码是由汇编语言指令和标识符(变量、常量等)组成的文本文件。 在编辑源代码时,我们需要遵循特定的格式和语法规则。这些规则包括指令的书写方式、操作数的类型和顺序、标识符的命名规则等。通过正确编写源代码,我们可以确保程序的正确性和可读性。 步骤二:汇编源代码 编辑完成源代码后,我们需要将其转换为机器可执行的形式。这一步骤称为汇编,它将汇编语言指令翻译为机器指令。 在进行汇编时,我们使用汇编器(Assembler)来执行。汇编器读取源代码文件,将其中的指令和标识符转换为对应的二进制表示形式。同时,汇编器还会对程序中的语法和语义错误进行检查,并生成相应的错误提示。

经过汇编的源代码将生成目标文件,其中包含了机器指令的二进制表示以及其他必要的信息(如数据段、代码段等)。目标文件通常具有.obj、.o或.exe等扩展名。 步骤三:链接目标文件 在汇编语言程序中,我们通常会使用外部的库函数或模块。为了让程序能够调用这些外部资源,我们需要将目标文件与这些资源进行链接。 链接的主要任务是解析目标文件中的符号引用,并将其与相应的符号定义进行关联。符号可以是函数、变量或常量等。通过链接,我们可以确保程序能够正确地调用外部资源,实现所需的功能。 在进行链接时,我们使用链接器(Linker)来执行。链接器读取所有需要链接的目标文件,对符号进行解析和关联,生成最终的可执行文件。可执行文件是一个可以直接运行的二进制文件,其中包含了完整的机器指令和数据。 步骤四:加载和运行程序 在链接完成后,我们需要将可执行文件加载到计算机的内存中,并执行其中的指令。这一步骤称为加载和运行。 加载程序的任务是将可执行文件中的指令和数据加载到适当的内存地址上。加载器(Loader)负责执行此任务,它将可执行文件按照一定的规则加载到内存中,并为其分配合适的内存空间。

汇编语言基础

汇编语言基础 (一)汇编语言的基本语法 1.字符集 (1)英文字符:A~Z a~z (2)数字字符:0~9 (3)算术运算符:+ - * / (4)关系运算符:<=> (5)分隔符: ,: ;() [] ’ (空格) TAB (6)控制符: CR(回车) LF(换行) FF(换页) (7)其他字符: & - (下划线)?. $ @ ! % 在用汇编语言编写程序时,程序中的指令助记符、标识符、运算符、分隔符等,均应由上述字符集中的字符组成。使用其他字符均为非法字符,8086/8088宏汇编程序不能识别和翻译。 2.标识符 标识符在程序中用作变量名、常量名、记录名、段名等。规定如下: (1)标识符由1~31个字符组成,打头的字符必须是字母、?(问号)、@和 - (下划线)。 (2)从第2个字符开始。组成标识符的字符可以是字母、数字、@、?、 - 等,不能使用其他字符。 3.保留字 8086/8088中指令助记符、伪指令、寄存器名、表达式运算符及属性操作符等都是系统的保留字。保留字不能用作标识符。 4.语句 80x86宏汇编语言有三种基本语句,即指令语句、伪指令语句和宏指令语句。指令语句对应着机器的一种操作,汇编时产生一个目标代码;伪指令是为汇编程序提供编译信息、指标汇编程序做某些操作的语句,它不产生目标代码,与机器的操作无关。

一条语句在源程序中一般只占一行,长度超过一行时必须用续行符号&。 5.汇编语言程序结构 用汇编语言编写的源程序,在结构上具有以下特点: (1)由若干逻辑段组成,各逻辑段由伪指令语句定义和说明。 (2)整个源程序以END伪指令结束。 (3)每个逻辑段由语句序列组成,各语句可以是指令语句、伪指令语句、宏指令语句、注释语句或空行语句。 (二)汇编语言和汇编处理过程 计算机完成汇编任务是由一个称为汇编程序(Assembler)软件工具实现的。汇编程序是一种系统软件。汇编程序加工的对象是汇编语言程序,称为源程序,而汇编后产生的结果是机器语言程序,称为目标程序。 常见的汇编程序有行汇编和宏汇编。 1.行汇编 这种类型的汇编程序按行对汇编语言源程序逐条汇编,常见的IBM PC动态调试程序DEˉBUG中的A命令就属于这种汇编类型。 2.宏汇编 这种类型的汇编程序首先对扩展名为.ASM的汇编语言源程序进行汇编,产生扩展名为.OBJ的可重定位目标代码文件,然后用链接程序LINK链接一个或多个.OBJ模块(包括库文件),生成一个扩展名为.EXE的可执行目标文件。使用这种汇编语言进行汇编处理的过程如下: (1)建立源程序; (2)产生目标程序; (3)链接目标程序; (4)运行和调试。 二、80x86指令系统 (一)8086指令系统

微机原理实验指导(3-6)

实验三 基于选择结构的程序设计 一.实验目的 1. 掌握分支程序的设计方法; 2. 掌握利用DEBUG 修改参数、检查结果的方法; 1. 熟悉汇编语言源程序的编辑、汇编、连接及调试过程。 二.实验内容 1.编写一个程序,显示AL 寄存器中的两位十六进制数 2.编写一个程序,计算分段函数的值:?? ???<-=>=010001x x x y 。 三.实验要求 1.编写实验内容要求的两个程序; 2.利用DEBUG 分析结果的正确性; 3.熟悉源程序汇编、连接命令的使用方法。 四.实验设备 PC 微机 DOS 操作系统或 Windows 操作系统 MASM.EXE ,LINK.EXE ,DEBUG .COM 或宏汇编集成环境 五.实验步骤 1. 用EDIT 或其它编辑软件,编写.ASM 源程序,例如HEXASC.ASM 及DSPKEY.ASM 。 2.对其进行汇编及连接,产生.EXE 文件。 3.对.EXE 文件进行调试运行。 (1)用DEBUG 调试运行,学会修改AL 内容的方法; (2)对DSPKEY.EXE 键入不同的字符,分别进行调试; (3)在MS-DOS 下运行这两个.EXE 文件。 实验参考程序清单 (1) 显示AL 中两位十六进制数程序: ;DISPHEX.ASM CODE SEGMENT ASSUME CS :CODE START :MOV AL ,3EH MOV BL ,AL

MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 JBE NEXT1 ADD DL,7 NEXT1:ADD DL,30H MOV AH,2 INT 21H ;显示高位ASCII码 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7 NEXT2:ADD DL,30H MOV AH,2 INT 21H ;显示低位ASCII码 MOV AH,4CH INT 21H CODE ENDS ;返回DOS END START (2)(源程序在P130页) 六.实验小结 分支程序可分为:产生条件、测试、定向、标号。分支结构有单分支结构,双分支结构,多分支结构。用能够影响CF、ZF、OF的指令来产生条件,如CMP,SUM,AND,TEST,位移指令。汇编的分支程序设计使得我们对于一个较为繁琐的程序的编写有了一定的条理,而且方便人们对于所编写的程序进行有条理的检查,对程序的修改也更加方便。进行分支结构使得汇编语言更加灵活, 实验四基于循环结构的程序设计 一.实验目的 1.掌握循环程序的设计方法; 2.学会针对不同的问题,选用不同的组织循环的方法; 3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。二.实验内容

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法汇编语言作为一种低级编程语言,具有高度的灵活性和效率,尤其适用于对计算机底层操作进行精确控制的应用。本文将介绍汇编语言的编程步骤与调试方法。 一、编程步骤 1. 设计算法:编程之前,首先需要明确编写代码的目的和功能。根据需求,设计出合适的算法,确定程序的输入、输出等基本要素。 2. 选择汇编语言指令集:根据计算机的硬件平台和操作系统,选择合适的汇编语言指令集,如x86、ARM等。 3. 编写代码:根据算法,使用汇编语言指令集编写代码。汇编语言使用助记符来表示指令和操作数,需要了解指令的语法和使用方法。 4. 组织程序结构:在编写代码时,需要按照一定的结构组织程序,包括定义数据段、代码段等,并进行正确的程序控制流程设计。 5. 完善程序功能:根据需求,完善程序的各项功能。可以包括输入输出处理、数据操作、逻辑判断、循环处理等。 6. 调试和优化:编写完成后,进行程序的调试和优化。可以通过调试工具、打印输出等方式,定位和解决程序中的错误和问题。同时,优化程序的性能,提高代码的执行效率。 7. 文档记录:在编写代码的过程中,逐步记录代码的功能、变量定义、重要的注释等信息,便于他人阅读和维护。

二、调试方法 1. 单步调试:单步调试是指逐条执行汇编语言程序,观察每条指令 的执行情况。通过单步调试可以查看寄存器的值、内存的状态等信息,以便定位错误。 2. 设置断点:在需要观察或调试的代码行上设置断点,运行程序时 会在断点处停止执行,可以查看此时程序的状态,并逐步分析代码的 执行流程。 3. 查看寄存器和内存:在调试过程中,可以查看寄存器和内存中的值,以判断程序是否按照预期的方式处理数据。通过查看寄存器和内 存的值,可以分析代码的执行过程和结果。 4. 打印输出:可以通过在程序中插入打印输出语句,输出关键变量 的值,以便观察程序的执行过程和数据的变化。 5. 利用调试工具:使用专业的调试工具可以更加方便地进行汇编语 言程序的调试。调试工具提供了更强大的功能,如设置断点、查看寄 存器和内存、调试时的动态变量查看等。 6. 错误定位和修复:在调试过程中,根据观察到的错误信息和程序 状态,确定错误的来源和原因,并对代码进行修复。修复后,再次进 行调试,直至程序达到预期的功能。 三、总结 汇编语言的编程步骤包括算法设计、选择指令集、编写代码、组织 程序结构、完善功能、调试和优化、文档记录等。调试方法包括单步

汇编语言源程序的运行过程

汇编语言源程序的运行过程 一、概述 二、具体操作过程 1.编辑过程 在计算机“附件”的“记事本”中,用word 编辑汇编语言源程序,比用编辑程序EDLIN 要方便得多。因为使用后者,必须熟记它的各种命令及其功能。使用前者的操作步骤如下: 第一步:编辑并建立扩展名为ams 的文件 开始→程序→附件→记事本→键入汇编语言源程序(也可用Ctrl+C 及Ctrl+V 拷贝已有程序)→文件→另存为→出现“另存为”窗口→在‘文件名:’处为该文件命名,并切记:将扩展名由.txt 改为.asm →在“另存为”窗口里的“我的电脑”中找到含有MASM.EXE 、LINK.EXE 以及DEBUG.EXE 这三个工具的文件夹(如,8086experi ),并双击之→该文件夹名便出现在“保存在:”处→保存(至此,该文件夹中将出现你所编辑的扩展名为asm 的汇编语言源程序。此时的源程序以ASCII 码形式存盘,而非机器码)→关闭记事本。 注意:上述三个工具及用户程序必须在同一文件夹中。 此后,为显示,打印或修改该程序,双击该程序的图标即可。 第二步:在DOS 下运行EDLIN ,以便查找并排除源程序中可能存在的语法错误。 window 状态→开始→运行→打开:cmd ↙→确定→出现DOS 提示符:C:\……>→指定存有你的程序的文件夹所在盘(如D 盘)为当前盘 D: ↙→D:\>cd 文件夹名↙→ 在DOS 管理下键入 源程序 编辑程序 无语法错误的汇编语言调试过程

D:\文件夹名>edlin 文件名.asm ↙ End of input file * E ↙ 按结束编辑命令E 之前,生成了一个扩展名为$$$的文件;结束编辑状态之后,该文件的扩展名由$$$变为BAK 。 特别指出:即使不用EDLIN 进行编辑,也必须进行此步。否则,若源程序中存在语法错误,下一步进行汇编后,不予提示,也不生成机器码文件,无法进行再下一步的连接,致使程序无法运行。除非源程序中无任何语法错误。 2.汇编过程 D:\文件夹名>masm 文件名;↙ 汇编程序负责将源程序文件(扩展名为.ASM )翻译为二进制的机器码文件(扩展名为.OBJ )。 在汇编过程中,计算机对源程序文件要进行语法检查,若有错误,在汇编结束后,屏幕上将出现错误信息提示,这时需要返回到编辑过程,对有语法错误的语句进行修改,修改后的源程序需要重新汇编,直到汇编结束时无语法错误为止。注意:汇编过程不能发现程序中的逻辑错误。 汇编结束时,生成扩展名为OBJ 的文件(即CPU 可识别的目标(object )文件,又称机器码文件)。若在编辑阶段中留有任何语法错误未改,则不能生成OBJ 文件,从而无法往下进行。 3.连结过程 D:\文件夹名>Link 文件名;↙ 我们学习汇编的主要目的,就是通过用汇编语言进行编程而深入地理解计算机底层的基本工作机理,达到可以随心所欲地控制计算机的目的。基于这种考虑,我们的编程活动,大都是直接对硬件进行的。我们希望直接对硬件编程,却并不希望用机器码编程。我们用汇编语言编程,就要用到:编辑器(Edit )、编译器(Masm )、连接器(Link )、调试工具(Debug )等工具,而这些工具都是在操作系统控制下运行的程序,所以我们的学习过程必须在操作系统的环境中进行。而操作系统,使用了许多工具,这势必要牵扯到操作系统、编译原理等方面的知识和原理。我们只是利用这些环境、工具来方便我们的学习,而不希望这些东西分散了我们的注意力。所以,对于涉及到而又不在本课程学习内容之中的东西,只做简单的解释。 * L ↙ 显示24条指令 * 25L ↙ 显示从第25条指令开始的另24条指令 此处为选择性操作

第四章-汇编语言程序的设计

第四章汇编语言程序设计 本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。 (一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。在介绍之前,我们还是来学习汇编语言的一些基础知识) 4.1 汇编语言程序设计概述 1、计算机的汇编语言 以助记符表示的指令,每一条指令就是汇编语言的一条语句。 (汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。汇编语言的语句有严格的格式要求) 2、汇编语言的语句格式 MCS-51汇编语言的语句格式表示如下: [<标号>]: <操作码> [<操作数>]; [<注释>] 标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。 ①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。 ②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。 (同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。) 操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。 操作数:给指令的操作提供数据或地址。 注释:是对语句或程序段的解释说明。 (在单片机中,这四个部分怎么加以区分呢?使用分界符) 分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。 冒号(:)用于标号之后 空格()用于操作码和操作数之间 逗号(,)用于操作数之间,分割两个以上的操作数 分号(;)用于注释之前。 (注释部分汇编语言不对它们进行编译的。而是将标号,操作码,操作数部分加以翻译成机器码。看一个例子) (表面是延时子程序的第一条语句,故加上标号,便于访问。上面的语句如何编译的呢?) ORG 3000H 3000H E8H DELY: MOV A, R0 ; 这是延时子程序

汇编语言源程序的编辑与调试过程

汇编语言源程序的编辑与调试过程 汇编语言源程序的编辑与调试过程 1.怎样在TD环境下载入被调试程序? 答:方法1:转到TD.EXE 所在目录,在DOS 提示符下键入以下命令: C:\ASM>TD↙ 进入TD后,按Alt-F键打开File 菜单,选择Open,在文件对话框中输入要调试的程序名,按 回车。 方法2:转到TD.EXE 所在目录,在DOS 提示符下键入以下命令(假定要调试的程序名为HELLO.EXE): C:\ASM>TD HELLO.EXE↙ 方法3:在Windows 操作系统中,打开TD.EXE 所在目录,把要调试的程序图标拖放到 TD 的 图标上。 2.在TD环境下如何编辑汇编指令? 答: (1)用Tab键选择代码区为当前区域; (2)用方向键把光标移到期望的地址处,如果是输入一个新的程序段,建议把光标移到CS:0100H处; (3)打开指令编辑窗口,有两种方法: 一是在光标处直接键入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口。 二是用Alt-F10键激活代码区局部菜单,选择其中的汇编命令,屏幕上也会自动弹出指令 的临时编辑窗口。 (4)在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在

光标处(替换掉原来的指令),同时光标自动下移一行,以便输入下一条指令。 3.在TD环境下如何查看/修改数据段的数据? 答: (1)用Tab键选择数据区为当前区域; (2)使用局部菜单中的“Goto”命令并结合使用方向键把光标移到期望的地址单元处(注意数 据区的光标是一个下划线),数据区就从该地址处显示内存单元的内容。 (3)若要修改该地址处的内容,则需打开数据编辑窗口。有两种方法: 一是在光标处直接键输入数据,在输入数据的同时屏幕上就会自动弹出数据编辑窗口。二是用Alt-F10键激活数据区局部菜单,选择其中的“Change”命令,屏幕上也会弹出数据编 辑窗口。 (4)在数据编辑窗口中输入所需的数据,输入完后,按回车,输入的数据就会替代光标处的原 始数据。 4.在TD环境下如何修改寄存器内容? 答: (1)用Tab键选择寄存器区为当前区域; (2)用方向键把光标移到要修改的寄存器上; (3)打开编辑输入窗口。有两种方法: 一是在光标处直接键入所需的值,在键入的同时屏幕上就会自动弹出编辑输入窗口。二 是用Alt-F10键激活寄存器区局部菜单,选择其中的“Change”命令,屏幕上也会弹出编 辑 输入窗口。 (4)在编辑输入框中键入所需的值,然后回车,这个新的值就会

汇编语言程序的编辑汇编连接和调试

汇编语言程序的编辑汇编连接和调试汇编语言程序的编辑、汇编、连接和调试 汇编语言是一种低级编程语言,用于编写计算机程序。在进行汇编 语言程序的开发过程中,编写程序只是第一步。为了使程序能够在计 算机上正确运行,还需要进行编辑、汇编、连接和调试等步骤。 一、编辑 编辑是指使用文本编辑器创建汇编语言程序的过程。在编辑过程中,需要遵循汇编语言的语法规则,并按照编程需求编写相应的指令和操 作码。在编辑过程中要注意代码的格式化与缩进,以便提高代码的可 读性和维护性。 二、汇编 汇编是将汇编语言源代码翻译成机器码的过程。机器码是计算机能 够识别和执行的代码形式。在汇编过程中,需要使用汇编器(Assembler)来完成源代码到机器码的转换。汇编器会将汇编语言指 令翻译成对应的机器码,并生成目标文件。 三、连接 连接是将多个目标文件或库文件合并成一个可执行文件的过程。在 编写大型程序时,通常会将程序分成多个模块并分别编译为目标文件。连接器(Linker)能够将这些目标文件合并,并解析符号引用关系,产

生最终的可执行文件。连接过程中还会进行地址重定位和符号解析等操作,以保证程序的正常执行。 四、调试 调试是在程序执行过程中,发现和修复错误的过程。汇编语言程序往往较为底层,难以直接调试。因此,在调试过程中,我们需要借助调试器(Debugger)来跟踪程序的执行,查看寄存器状态、内存数据等信息,以便定位和修复问题。调试工具还可以设置断点、单步执行等操作,帮助我们更好地理解程序的执行过程。 综上所述,汇编语言程序的编辑、汇编、连接和调试是编写汇编程序不可或缺的步骤。通过严格遵循语法规则,正确编辑汇编源代码,并经过汇编、连接和调试等过程,可以使程序在计算机上正确执行,实现预期的功能。

实验一 熟悉汇编语言使用环境

实验一熟悉汇编语言使用环境 一、实验目的: 1、熟悉汇编语言的编辑、汇编、连接、运行的全过程。 2、了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE命 令包含文件的方法。 3、算术运算类操作 二、实验内容和步骤: 1、汇编语言源程序要运行的四个步骤: (1)用编辑软件EDIT或记事本编辑一个扩展文件名为ASM的汇编语言源程序。(2)用汇编程序MASM或TASM 汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK 或TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE) (4)运行可执行文件。观察执行结果,以验证其正确性。 2、从键盘上输入两个十进制数正数(<32767),相加并显示结果。 参考程序: .model tiny .stack 256 .CODE START: CALL read ;从键盘接受一个十进制数 MOV AX,BX call dpcrlf CALL read ;从键盘接受一个十进制数 ADD bx,aX call dpcrlf ;回车换行 CALL write ;显示结果 .exit 0 INCLUDE out_B_D.ASM ;把二进制转换为十进制数输出过程:write INCLUDE in_D_B.ASM ;把二进制转换为十进制数输入过程:read END START 3. 改写程序为输入两个十进制数,相减并显示输出。 4.改写程序为输入两个十进制数,相乘并显示输出。 5.改写程序为输入两个十进制数,相除并显示输出。 (注:例4.27read:十进制—>二进制转换过程,出口参数BX=二进制数;例P4.28,write:二进制—>十进制转换过程,入口参数BX=二进制数, dpcrlf:回车换行) 三、记录结果与分析:(截图并打印在实验报告上) 四、实验中遇到的问题和解决的步骤、方法 五、问题与思考(2位压缩BCD加、减及转换成对应ASC输出等运算、字节的非压缩BCD加、减、乘等运算。)

汇编语言源程序的编辑汇编连接的方法

汇编语言源程序的编辑汇编连接的方法 1. 使用正确的扩展名:源代码文件应该使用与汇编器兼容的扩展名,如.asm或.s。 2.引入必要的库:根据程序的需求,可能需要引入一些预编译库,在 源代码中使用相应的指令或宏。 3.编写注释:在源代码中添加注释,以便于其他人阅读和理解代码的 功能和逻辑。 二、汇编源程序: 汇编是将源代码转换为机器码的过程。在进行汇编之前,需要使用专 门的汇编器将源程序转换为可执行文件。最常用的汇编器是GNU Assembler (GAS),它通常与GCC工具链一起使用。下面是执行汇编的步骤: 1. 打开命令行界面:需要进入一个命令行终端,如Windows的CMD 或Linux的终端。 2. 切换工作目录:使用cd命令在命令行中进入源代码所在的目录。 例如,如果源代码文件位于C:\Programs目录中,可以使用以下命令:cd C:\Programs。 3. 使用汇编器:执行汇编器的命令,将源代码转换为目标文件。以 下是一个示例命令:gcc -c program.asm -o program.o。这个命令使用GCC编译器调用GNU Assembler (GAS)进行汇编,并将输出的目标文件保 存为program.o。 在进行汇编时,可能需要注意以下几点:

1.确保安装了汇编器:确保系统中安装了汇编器,如GAS,并且其可 执行文件所在的目录已添加到系统的环境变量中。 2.处理错误和警告:在进行汇编时,可能会出现错误和警告。需要仔 细阅读汇编器输出的信息,并进行相应的修正。 三、连接目标文件: 连接是将目标文件与所需的库文件合并为一个可执行文件的过程。在 连接之前,需要使用链接器将目标文件与库文件进行关联。最常用的链接 器是GNU链接器 (ld),它也通常与GCC工具链一起使用。以下是执行连 接的步骤: 1. 打开命令行界面:需要进入一个命令行终端,如Windows的CMD 或Linux的终端。 2. 切换工作目录:使用cd命令在命令行中进入目标文件所在的目录。 3. 使用链接器:执行链接器的命令,将目标文件与所需的库文件进 行链接,并生成可执行文件。以下是一个示例命令:gcc program.o -o program。这个命令使用GCC工具链的链接器,链接目标文件program.o,并将可执行文件保存为program。 在进行连接时,可能需要注意以下几点: 1. 确保安装了链接器:确保系统中安装了链接器,如ld,并且其可 执行文件所在的目录已添加到系统的环境变量中。 2.指定库文件:如果程序使用了额外的库文件,可能需要通过命令行 参数或链接脚本指定这些库文件。

汇编语言上机试验汇总

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1)编辑源程序(生成.ASM文件) (2)汇编源程序(.ASM - .OBJ) (3)连接目标程序(.OBJ - .EXE ) (4)调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5)运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM、DEBUG、LINK等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。

图1.1汇编语言程序上机过程(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

建议源程序存放的目录名为MASM 中,MASM 子目录在D 盘的根目录下。 可以在DOS 模式下用编辑程序EDIT.EXE 建立汇编语言源程序文件ABC.ASM ,注意 文件名的扩展名必须是.ASM 。也可以在Windows 2000或者在Windows XP 环境下鼠标单击 “开始” f “运行”,在“运行”中输入七乂口”进入DOS 模式,运行EDIT 软件,例 如: C:\documents and settings\administrator>cd\ *进入 C 盘根 目录 C:\>d: *进入D 盘 *在D 盘创建MASM 文件夹 *进入MASM 文件夹 *建立 run 源文件 进入EDIT 的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序, 输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $, N DB 0DH,0AH,'This is not a leap year! W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR D:\>md masm D:\>cd masm D:\masm>edit run.asm

第四章汇编语言源程序设计

第四章汇编语言源程序设计 1.画出数据段汇编后相应存储单元中的内容并标出存储单元的逻辑地址。 DA TA SEGMENT ORG 0100H ABC0 EQU 78H ABC DB 09H,-2,45H, 2 DUP(01H,?),‘AB’ ABC1 DW -2, 34H+ABC0,$ ABC2 DD 12H ABC3 DW ABC DA TA ENDS 解: DS:0100H ABC→ DS:0101H DS:0102H DS:0103H DS:0104H DS:0105H DS:0106H DS:0107H DS:0108H DS:0109H ABC1→ DS:010AH DS:010BH DS:010CH DS:010DH DS:010EH DS:010FH ABC2→ DS:0110H DS:0111H DS:0112H DS:0113H ABC3→ DS:0114H 2.设程序中的数据定义如下: PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ? PLENTH EQU $-PARTNO 问PLENTH的值为多少?它的含义是什么? 解:PLENTH的值为22(16H)。表示当前位置与PARTNO之间有22个字节空间。3.假设程序中的数据定义如下: LNAME DB 30 DUP(?)

ADDRESS DB 30 DUP(?) CITY DB 15 DUP(?) CODE_LIST DB 1,7,8,3,2 (1)用一条MOV指令将LNAME的偏移地址放入AX; (2)用一条指令将CODE_LIST的头两个字节的内容放入SI: (3)写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。解:(1)MOV AX,OFFSET LNAME (2)MOV SI,WORD CODE_LIST (3)CODE_LENGTH EQU $-CODE_LIST 4.执行下列程序段后,AX、BX的内容各是什么? MOV AX,0001H MOV BX,8000H NEG AX MOV CX,4 AA:SHL AX,1 RCL BX,1 LOOP AA HLT 解:AX=0FFF0H,BX=000FH 5.阅读以下程序,回答问题 DA TA SEGMENT ABC DB 90H,12H,43H,56H,04H,01H COUNT EQU $-ABC RESULT DW ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,DA TA MOV DS,AX XOR AX,AX MOV CX,COUNT LEA SI,ABC LEA DI,RESULT AA:MOV BL,[SI] INC SI CMP BL,80H JC NEXT1 NEG BL NEXT1:ADD AL,BL ADC AH,00H LOOP AA MOV [DI],AX MOV AH,4CH

汇编语言程序设计报告范文

汇编语言程序设计报告范文 实验一: 一、实验目的: 1.学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2.了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3.掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步 掌握汇编语言的开发过程。 4.掌握DOS系统功能调用的基本方法。二、实验原理 通过调用(INT21H)表中的01h号功能号从键盘输入一个字符并回显 到视频显示器上 三、实验内容及算法流程、源程序清单 实验内容:编写程序,从键盘输入一个字符并回显到视频显示器上。 源程序清单:实验1.am实验1.obj实验1.e某 ecodeegmentaumec:codetart:movah,1int21hmovah,4chint21hcodeendend tart 实验二:编写程序,显示一个字符Q一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。

3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初 步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。二、实验原理 通过调用(INT21H)表中的02h号功能显示输出一个字符Y。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容:编写程序,显示输出一个字符Q。源程序清单:实验2.am 实验2.obj实验2.e某e codeegment aumec:codetart: movah,02movdl,'Q'int21hmovah,4chint21hcodeendendtart 实验三:编写程序,在屏幕上显示输出“IloveDOTA”一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初 步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。二、实验原理 考察通过调用(INT21H)表中的0ah号功能显示输出字符串

Win32汇编教程(基础)

汇编语言基础win32 一、引言 Win32应用程序一般使用C语言编程,但是在某些需要进行深层编程的情况下,例如Win32应用程序执行机制分析、病毒清除、加密解密等深层编程,或者对于某些速度要求较高的程序,需要使用汇编语言(甚至机器语言)直接编写Win32应用程序。Win32应用程序虽然和其他32位应用程序(例如32位保护模式DOS 程序)一样可以使用386汇编语言和保护模式编程,但是Win32应用程序的执行机制与其他32位应用程序有一定的差别,例如消息循环、动态链接等,Win32汇编语言也有其特殊的编程方式。目前国内极少看到有关Win32汇编语言的资料,市面上的汇编语言书籍一般只介绍DOS实模式汇编语言和386保护模式汇编语言,金山公司的《深入Windows编程》一书虽然介绍了使用汇编语言写Windows应用程序的方法,可惜该书只介绍了Win16汇编语言。为了使大家能对Win32汇编语言的基本编程方法有一定的了解,近日得闲,笔者编写了本教程,旨在抛砖引玉,如果本教程能够带领你走进神秘的Win32汇编语言世界,笔者心愿足矣。使用本教程,要求读者具有C语言编写Win32应用程序(Win32SDK编程)的基础。 二、进行Win32汇编语言编程的基本软件 进行Win32汇编语言编程,应该准备下列基本软件: 1、MASM 6.11以上版本的汇编器 MASM是Microsoft公司的汇编器,这是最基本的软件,必需MASM 6.11以上版本才能够汇编Win32汇编语言源程序。不过进行Win32汇编语言编程不必要全套的MASM 6.11,只要一个ML.EXE文件就可以了,Windows 95 DDK中带有MASM 6.11c的ML.EXE文 件,Windows 98 DDK中带有MASM 6.11d的ML.EXE文件,都可以使用。Turbo MASM 5.0(TASM)是Borland公司的汇编器,也可以用来汇编Win32汇编语言源程序,但是TASM的部分语法与MASM不同,用于MASM的Win32汇编语言源程序可能需要修改后才能用TASM汇编。本教程中的所有Win32汇编语言源程序都基于MASM。 2、Win32SDK 进行Win32汇编语言编程需要用到Win32SDK中的资源编译器(RC.EXE)和连接器(LINK.EXE),还需要用到Win32SDK中的引入库文件(KERNEL32.LIB、USER32.LIB、GDI32.LIB等)。如果没有Win32SDK,Platform SDK也可以,还可以安装Visual C++ 2.0以上版本的Visual C++,笔者使用的是Visual C++ 6.0。Borland C++ 4.0以上版本的Borland C++也可以使用,只是资源编译器和连接器的 文件名不同,分别是BRC.EXE(BRC32.EXE)和TLINK.EXE(TLINK32.EXE),选项也不尽相同,另外Borland C++不支持COFF格式的OBJ文件,汇编时不能使用/coff选项。 3、汇编语言编辑器 一个普通的文本编辑器,用于编辑Win32汇编语言源程序。EDIT、PWB等都可以,Visual C++等编程语言中的编辑器也可以,甚至WORD、WPS 97等可以编

相关文档
相关文档 最新文档