汇编语言..上机操作基本常识
汇编基础入门知识
![汇编基础入门知识](https://img.taocdn.com/s3/m/c7a5605ea200a6c30c22590102020740bf1ecd41.png)
汇编基础入门知识汇编语言是一种低级编程语言,用于与计算机硬件进行直接交互。
它是人类可以读懂的机器码的替代品,通过汇编语言,程序员可以控制计算机的底层操作和硬件资源。
在本文中,我们将介绍汇编语言的基础知识,包括语法、数据类型、寄存器和常用指令等。
一、汇编语言的基本概念汇编语言是由一系列的符号和指令组成的。
它与计算机的机器码一一对应,每个汇编指令都对应着一条机器码指令。
通过汇编器,我们可以将汇编语言翻译成机器码,然后由计算机执行。
二、汇编语言的语法和指令格式1. 汇编语言的语法规则汇编语言的语法规则包括指令、伪指令、标号、操作数等几个关键部分。
指令是最基本的语法单位,它用来执行特定的操作,例如将数据从一个地方移到另一个地方。
伪指令是一种特殊的指令,用来给汇编程序提供额外的信息,例如定义常量或者设置程序的起始地址。
标号用来标记程序的不同部分,例如循环或者条件语句。
操作数是指令的操作对象,可以是寄存器、内存地址或者立即数等。
2. 汇编指令的格式每条汇编指令由操作码和操作数组成。
操作码定义了具体的操作,例如将两个数相加或者将数据存储到内存中。
操作数则指定了操作的对象和参数,例如操作的寄存器或者内存地址。
三、汇编语言的数据类型1. 寄存器寄存器是一种用来存储数据的硬件设备。
不同的CPU架构有不同的寄存器,其中有一些是通用寄存器,可以用来存储任意类型的数据。
例如,在x86架构中,我们有AX、BX、CX、DX等通用寄存器。
2. 内存内存是计算机用来存储数据和程序的地方。
在汇编语言中,我们可以通过内存地址来访问存储在内存中的数据。
内存地址由段地址和偏移地址组成,通过将它们相加,我们可以得到实际的内存地址。
四、常用的汇编指令1. 数据传输指令MOV指令用来将数据从一个地方传输到另一个地方。
例如,可以使用MOV指令将寄存器中的数据传输到内存中,或者将一个内存地址中的数据传输到寄存器中。
2. 算术运算指令ADD和SUB指令用来执行加法和减法运算。
汇编语言程序的上机过程
![汇编语言程序的上机过程](https://img.taocdn.com/s3/m/7e28090ff78a6529647d53d2.png)
汇编语言的上机过程汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。
汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。
1、建立源程序文件建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。
保存时,源程序文件的扩展名必须是ASM。
练习:(1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。
(调用命令“C:\EDIT”进入EDIT编辑器。
)源程序文件如下:DSEG SEGMENTMESSAGE DB 'HOW DO YOU DO?',0DH,0AH,24HDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21HMOV AH,4CHINT 21HCSEG ENDSEND BEGIN(2)编程计算1+2+3+ ……+100,和放在AX寄存器中,要求用循环实现。
对于MASM5.0和MASM6.14两个版本,编译和连接的方法有所不同。
以下分别就两个版本的编译和连接的方法进行讲解。
如果使用MASM5.0的话,操作方法如下(以HELLO.ASM源程序文件为例):2、对源程序进行汇编,生成目标文件HELLO.OBJ。
操作:(1)在DOS下进入MASM5.0的目录,如C:\MASM5>(2)敲入命令: MASM HELLO说明:.obj文件:目标代码文件,纯二进制代码文件,不能直接显示在屏幕上。
.lst文件:包含源程序中各语句及其对应的目标代码,各语句的偏移量等相关信息,对调试程序有帮助,但一般情况不需要。
.crf文件:交叉索引文件,给出源程序中定义的符号引用情况,初学时不需建立。
3、连接目标文件,生成执行文件HELLO.EXE,操作:敲入命令LINK HELLO说明:.EXE文件:可执行文件.MAP文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。
汇编语言上机操作
![汇编语言上机操作](https://img.taocdn.com/s3/m/8beee76768eae009581b6bd97f1922791788be52.png)
汇编语言上机操作汇编语言上机操作一、建立子文件夹如:D:\hb\masm二、复制相关文件把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。
三、进入DOS方式开始/运行/cmd当前提示符可能是:C:\documents and settings\administrator>四、常用DOS操作命令1、改变当前盘输入d: 并回车,屏幕显示:D:\>2、改变当前目录1)进入下一级目录D:\>cd hb 回车后,屏幕显示:D:\hb>cd masm 回车后,屏幕显示:E:\hb\masm>问题:可以一次进入下面二级或多级目录吗?2)返回上一级目录D:\hb\masm>cd.. 回车后,屏幕显示:D:\hb\>cd.. 回车后,屏幕显示:D:\>问题:可以直接返回根目录吗?D:\hb\masm>cd\ 回车后,屏幕显示:D:\>3、显示当前目录内容D:\>dir /p 分页显示当前目录内容问题:如何显示d:\text中的内容?D:\>dir d:\text↙4、DOS方式下如何运行程序?DOS方式下的可执行文件(即程序文件)扩展名为.exe或.com,运行时只需要在系统提示符下输入文件主名即可。
例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做:D:\hb\masm>test↙五、汇编语言上机过程1、编辑源程序运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。
2、汇编D:\hb\m asm>masm add5.asm↙生成目标程序文件add5.obj。
(如果有语法错误,会提示错误所在行号和错误类型)3、连接D:\hb\masm>link add5↙生成可执行文件add5.exe。
六、DEBUG程序调用及汇编语言程序调试方法调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。
汇编语言上机环境及基本操作
![汇编语言上机环境及基本操作](https://img.taocdn.com/s3/m/e5b175d550e2524de5187eba.png)
实验1:讲解汇编语言上机环境及基本操作1.1 汇编语言程序的上机环境(1)DOS操作系统:在MS-DOS状态下,才能进行汇编语言操作。
(2)编辑程序:用来输入、建立和修改源程序的一种通用系统软件,如(3)汇编程序:宏汇编MASM.EXE。
(4)连接程序:LINK.EXE。
(5)调试程序:。
1.2 汇编语言程序的上机步骤(1)用编辑程序建立扩展名为.ASM的汇编语言源程序文件。
(2)用汇编程序MASM.EXE将源程序文件汇编成用机器码表示的目标程序文件,扩展名为.OBJ。
(3)如在汇编过程中出现错误,根据信息提示(如错误位置、错误类型、错误说明等),用编辑软件重新调入源程序进行修改。
无错时用连接程序LINK.EXE把目标文件转化成可执行文件,扩展名为.EXE。
(4)DOS命令状态下直接键入可执行文件名就可执行该文件。
1.3 应用举例1. 用编辑程序EDIT建立源程序(1)进入DOS命令状态,发出C:\>EDIT命令,可进入EDIT编辑屏幕,输入源程序。
在EDIT状态下用<ALT>键可激活命令选项,如图1所示,用光标上下、左右移动可选择相应命令功能,也可选择反白的命令关键字进行操作。
用<ESC>键可退出命令选项。
图1 EDIT屏幕编辑软件工作窗口(2)程序输入完毕退出EDIT前一定要将源程序文件存盘,以便进行汇编及连接。
【例1】从键盘输入10个字符,以与键入相反的顺序将10个字符输出到屏幕上,源程序名为STR.ASM。
DOS状态下,调用EDIT建立文件名为STR.ASM的汇编源程序,如图2所示。
图2 用EDIT建立汇编语言源程序2.用MASM将源程序文件汇编成目标程序文件DOS状态下,采用MASM对源程序文件进行汇编,如图3所示。
图3 用MASM汇编生成目标文件MASM主要功能:(1)检查源程序中的语法,有错时给出错误信息;源程序经汇编后无错误后产生目标程序文件,扩展名为.OBJ;(2)调入MASM时,先显示软件版本号,然后出现三个提示行:第1个提示行:询问目标文件名,方括号内为默认,可按回车,也可输入指定文件名。
汇编语言知识点
![汇编语言知识点](https://img.taocdn.com/s3/m/ae63e440df80d4d8d15abe23482fb4daa58d1d24.png)
汇编语言知识点汇编语言(Assembly Language)是一种低级程序设计语言,与机器语言密切相关,用于编写计算机程序。
它通过使用助记符(mnemonics)来代替二进制指令,使程序更易于阅读和编写。
本文将介绍一些汇编语言的基本知识点。
一、汇编语言的基本概念汇编语言是一种面向机器的编程语言,它直接运行在计算机的硬件上。
它使用一系列助记符来代表不同的指令和操作码,这些助记符对应着机器语言指令的二进制表示。
1.1. 寄存器寄存器是汇编语言中最基本的组成部分,它们用于保存数据和执行运算。
不同的计算机体系结构和处理器有不同的寄存器,但一般会包括通用寄存器、指针寄存器、标志寄存器等。
1.2. 指令和操作码汇编语言提供了一系列指令和操作码,用于执行各种操作。
指令可以是数据传输、算术运算、逻辑运算等操作,而操作码则是指令的二进制表示。
1.3. 内存汇编语言中,数据和指令都存储在内存中。
程序可以通过读写内存来操作数据和执行指令。
1.4. 标志位标志位是一组二进制位,用来记录计算机的状态和执行结果。
比如,标志位可以记录运算结果是否为零、是否产生进位等。
二、汇编语言的基本语法汇编语言的语法规则相对简单,但需要遵循一定的格式和规范。
2.1. 指令格式汇编指令一般由助记符、操作数和注释构成。
助记符表示执行的操作,操作数指定参与操作的数据,而注释用于解释指令的作用。
2.2. 伪指令伪指令是一类在汇编程序中使用的指令,它们不被计算机执行,而是由编译器或汇编器来处理。
伪指令可以用于声明变量、定义常量、分配内存等。
2.3. 标号标号是汇编程序中的一个重要概念,它用于标记特定的位置。
标号通常用来表示程序的入口点、循环语句的起始点等。
2.4. 注释注释是对汇编程序的解释和说明,它们对程序的执行没有影响。
注释可以用于提供程序的说明、变量的含义等信息。
三、汇编语言的常用指令汇编语言提供了丰富的指令集,用于执行各种操作。
下面是一些常用的指令:3.1. 数据传送指令数据传送指令用于将数据从一个位置复制到另一个位置。
汇编语言课件(9)—汇编语言上机指导
![汇编语言课件(9)—汇编语言上机指导](https://img.taocdn.com/s3/m/9078c2657e21af45b307a848.png)
下面给出一些常见出错信息,以便查对: 1、Register already defined 汇编内部出现逻辑错误 2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西 3、Symbol is multi-defined 重复定义一个符号 4、Symbol not defined 符号没有定义 5、Syntax error 语句的语法与任何可识别的语法不匹配 6、Symbol is reserved word 企图非法使用一个汇编程序的保留字(例:定义add为一变量) 7、Not proper align/combine type SEGMENT参数不正确 8、One operand must be const 这是加法指令的非法使用 9、Operands must be same or 1 abs 这是减法指令的非法使用 10、Already have base register 试图重复基地址 11、Illegal size for item 引用的项的长度是非法的,(如:双字移位) 12、Illegal register value 指定的寄存器值不能放入“reg” 字段 13、Must be AX or AL 某些指令只能用AX或AL 14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0) 15、Division by 0 or overflow 给出一个用0作除数的表达式 16、Value is out of range 数值大于需要使用的 17、CS register illeal usage 试图非法使用CS寄存器 18、DUP is too large for linker DUP嵌套太长,以至于从连接程序不能得到所要的记录
汇编语言上机指导
第1章汇编语言知识学习基本知识
![第1章汇编语言知识学习基本知识](https://img.taocdn.com/s3/m/a45ee378ae1ffc4ffe4733687e21af45b307fe2b.png)
第1章汇编语⾔知识学习基本知识第1章汇编语⾔基础知识本章介绍学习汇编语⾔程序设计所必须具备的基本知识,主要包括汇编语⾔的基本概念及计算机中数据的表⽰⽅法。
通过本章的学习,读者应能了解汇编语⾔概念及其使⽤的进位计数制、不同进位计数制之间的转换、计算机编码以及基本数据类型。
本章内容要点:汇编语⾔的概念汇编语⾔的特点不同进位计数制之间的转换计算机编码1.1汇编语⾔概述1.1.1 汇编语⾔基本概念⾃然语⾔是具有特定语⾳和语法等规范的、⽤于⼈类表达思想并实现相互交流的⼯具。
⼈与⼈之间只有使⽤同⼀种语⾔才能进⾏直接交流,否则就必须通过翻译。
要使计算机为⼈类服务,⼈们就必须借助某种⼯具,告诉计算机“做什么”甚⾄“怎么做”,这种⼯具就是程序设计语⾔。
程序设计语⾔通常分为三类:机器语⾔、汇编语⾔和⾼级语⾔。
⽽前两种语⾔与机器密切相关,统称为低级语⾔。
1.机器语⾔机器语⾔是计算机第⼀代语⾔,它全部由0、1代码组成,是能够直接被机器所接受的语⾔,是最底层的计算机语⾔。
机器语⾔不容易记忆,程序编写难度⼤,调试修改繁琐,且不易移植,现在程序员很少⽤。
但机器语⾔执⾏速度最快,它是⼀种⾯向机器的程序设计语⾔。
2.汇编语⾔为了克服机器语⾔难以记忆、表达和阅读的缺点,⼈们采⽤具有⼀定含义的符号作为助忆符,⽤指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。
例如,⽤ADD表⽰加法指令,SUB表⽰减法指令,MOV表⽰传送指令等。
汇编语⾔是汇编指令集、伪指令集和使⽤它们规则的统称。
伪指令的概念将在第4章介绍。
汇编语⾔⽐机器语⾔直观,容易记忆和理解,⽤汇编语⾔编写的程序也⽐机器语⾔程序易读、易检查、易修改。
对于不同的计算机,针对同⼀问题所编写的汇编语⾔源程序是互不通⽤的。
⽤汇编语⾔编写的程序执⾏效率⽐较⾼,但通⽤性与可移植性仍然⽐较差。
计算机不能直接识别⽤汇编语⾔编写的程序,必须由⼀种专门翻译程序将汇编语⾔程序翻译成机器语⾔程序,计算机才能执⾏。
汇编语言上机指导
![汇编语言上机指导](https://img.taocdn.com/s3/m/eb104b8adc88d0d233d4b14e852458fb760b3848.png)
汇编语言上机指导实验一DEBUG常用命令及8086指令使用实验目的:通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。
3、ASCII码及用16进制数表示二进制码的方法。
4、8086寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:一、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。
2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII 字符。
4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。
5、用命令E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
二、8086常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
汇编语言基础知识 课件
![汇编语言基础知识 课件](https://img.taocdn.com/s3/m/af8ba93c7dd184254b35eefdc8d376eeaeaa179e.png)
➢十字节 由10个字节组成一个十字节类型,它总共有80个二进制位。在汇
编语言中很少使用该数据类型。
➢字符串 字符串是由若干个字节组成的,字节数不定,通常每个字节存储一
个字符。该数据形式是汇编语言程序中经常使用的一种数据形式。 汇编语言中没有C语言中的规定:以ASCII码0为字符串的结束符。
②已知带符号数在计算机内表示,求出其真值 (注意字长多少位)
3 .BCD码
把十进制数的每个数位用4位二进制数表示,又称 BCD码(并非数值相等)
10#
2# , 2#
10# 要求数值相等!
4.非数值数据表示
(2)常用字(符1的)A字SCII表符示 数据表示——字符用ASCII码表示
只用只用2进制0和1来表示指令,计算机能直接接收并执行的语言。 [x]反码 数符数字化,当是正数时,[x]反与[x]原相同
字符数据表示:每个字符用一个字节,用ASCII码 表示
(3)汉字编码——基本形式: 每一个汉字2个字节
5. 基本数据类型
➢字节 一个字节有8位二进制组成,其最高位是第7位,
最低位是第0位。 通常情况下,存储器按字节编址,读写存储器的
最小信息单位就是字节。
➢字 由2个字节组成一个字,其最高位是第15位,最
(1)字符数据表示——字符用ASCII码表示 用2个字(4个字节)来组成一个双字,其高16位称为高字,低16位称为低字。
(3)编写程序的复杂性: 若是正数, [x]补码[x]原码表示形式相同
(2) 所生成的机器语言程序执行效率高。
基面础向知 机识器,必面须了向解硬机件特器性,,执行汇细节编; 指令与机器指令基本保持1 :1关系, 编程时要了解计算机硬件工作原理与特性,资源限制, 把十进制数的每个数位用4位二进制数表示,又称BCD码(并非数值相等)
汇编语言程序设计 上机指导
![汇编语言程序设计 上机指导](https://img.taocdn.com/s3/m/bc03bb20915f804d2b16c1cf.png)
汇编语言程序设计上机指导一、debug的使用Debug是为汇编语言设计的一种8086实模式的调试工具,它通过单步执行、设置断点等方式为汇编语言程序员提供了非常有效的程序调试手段。
Debug可以直接用来检查和修改内存单元内容、装入、运行程序、检查及修改寄存器的值,也就是说Debug可深入到计算机的内部,可使用户更紧密地与计算机中真正进行的工作相联系。
通过Debug能更好的理解代码。
(一)启动Debug方法1:在运行对话框中输入“cmd”启动DOS命令窗口后输入“Debug”回车;方法2:在程序/附件/命令提示符,启动DOS命令窗口后输入“Debug”回车。
Debug的提示符是符号“-”。
即出现提示符“-”就表示可以接受DEBUG命令了。
按Alt+Enter 键可在全屏与窗口之间切换。
(二)Debug命令格式DEBUG的每个命令都是一个字母,后跟一个或多个参数,参数与参数之间,用空格或逗号隔开,参数与命令符之间可用空格隔开,命令的结束符是回车键Enter。
下面对DEBUG命令作几点说明:●字母不分大小写。
●只使用16进制数,且不能带后缀H。
●以空格或逗号作为命令各项之间的分隔符。
分隔符只在两个数值之间是必须的。
●可以用Ctrl+C终止命令的执行。
●若输入的命令有语法错误,则提示“Error”,并用“^”指出错误位置。
(三)Debug常用命令1、R命令格式: R [<寄存器名>](1) R功能:显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址、代码及汇编语句形式(反汇编CS:IP所指的指令),其中对状态标志FLAG以每位的形式显示。
(2) R <寄存器名>功能:显示指定寄存器内容,例如:-R AX <Enter> 等待用户键入新的值,按回车键结束。
当进入DEBUG时,寄存器和标志设成以下数值:DS,ES指向最低可用段处的程序区前缀。
BX和CX为被装入文件的长度值。
熟悉和掌握汇编语言上机的基本操作
![熟悉和掌握汇编语言上机的基本操作](https://img.taocdn.com/s3/m/d7023945a216147917112896.png)
汇编:
利用ML.EXE宏汇编程序,将已经存盘的ASCII码源程序翻译成二进制目标程序,其扩展名一般为.OBJ。
1)操作方法:假定当前工作路径为C:\MYTEST>,且所需文件均存在于当前路径,则针对源程序TEST.ASM的汇编有以下三种方法(其中斜体部分由键盘输入):
外部命令一样,直接在DOS系统下运行,整个编程工作完成。如在本实验中:
C:\MYTEST>TEST↘
2)一般在编写较复杂的程序时,可能出现设计上的错误。如果不能在源程序中检查出错误,则必须通过DEBUG调试,才能检查出错误所在,然后再回到前面的各个步骤中重复操作。在本实验中,由于程序简单,可以不必调试。
b)C:\MYTEST>ML TEST.ASM↘
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987.
All rights reserved.
Object filename [TEST.OBJ]:↘
学生
实验记录
学生
实验总结
通过本次实验学习了如何搭建模拟DOS环境和使用DEBUG程序的使用方法。
再学习了编辑、编译、链接和运行的过程,并且进行实际的操作。学习了DEBUG程序的命令符。
教师评分
Source listing [NUL.LST]:↘
Cross-reference [NUL.CRF]:↘
51524 + 435132 Bytes symbol space free
0 Warning Errors
汇编语言上机过程
![汇编语言上机过程](https://img.taocdn.com/s3/m/a1a9c2395a8102d276a22fdc.png)
汇编语言程序的上机过程一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、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]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
如此进行,直至汇编无错误,得到目标文件为止。
3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
连接过程如下:▪在DOS状态下,输入命令:LINK MYFILE.OBJ(回车),即可完成连接。
▪与汇编过程类似,如果连接过程中出错,那么程序会在屏幕上显示提示信息。
实验一-8086汇编语言上机调试及基本操作.
![实验一-8086汇编语言上机调试及基本操作.](https://img.taocdn.com/s3/m/81c21fe8a1c7aa00b52acbe0.png)
实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。
(2)掌握工具软件EMU8086。
(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。
掌握各种数制之间的转换是一种基本功。
3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元DATA SEGMENT; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针MOV AX, 2afHMOV CL, 100DIV CLMOV RESULT_1, AL ; 除以100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以10, 得十位数MOV RESULT_3, AH ; 余数为个位数MOV AX,4C00H ; 返回DOSINT 21H ;CODE ENDSEND START ; 最后一行要按回车键5、实验及报告要求:1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。
汇编语言上机
![汇编语言上机](https://img.taocdn.com/s3/m/93b0940702020740be1e9b9c.png)
code SEGMENT ASSUME CS:code start: MOV CH, 4 ;字符个数 MOV CL, 4 ;循环移位次数 next: ROL BX, CL ;取显示位的值 MOV DL, BL ;保存在DL中 AND DL, 0FH ;清除高4位 ADD DL, 30H ;转变为数字的ASCII CMP DL, 39H ;大于39H, 则应转变 JLE print ;为字母A~F的ASCII ADD DL, 07H print: MOV AH, 2H ;显示DL中的字符 INT 21H DEC CH ;显示结束? JNZ next MOV AH, 4CH ;返回DOS INT 21H code ENDS END start
BX,OFFSET ARRAY DI,OFFSET MAX AX,[BX] BX BX CX,7 AX,[BX] L2 AX,[BX] BX BX L1 [DI],AX
思考
• 如何将最大值在屏幕上以16进制显示出来?
例2 将寄存器BX中的内容以十六进制形式显示出来。 (二进制 十六进制)
▲有关字符、数码转换的处理
用十六进制显示 BX内容子程
MOV DL, 20H MOV AH, 02H INT 21H RET POPF listbx ENDP AX POP code POP DX ENDS END BX POP start POP CX RET listbx ENDP code BP ;显示SI ;显示DI
listbx PROC PUSH CX ;保存寄存器 PUSH BX PUSH DX PUSH AX listbx PROC PUSHF MOV CH, 4 MOV CL, 4 next: ROL BX, CL MOV DL, BL AND DL, 0FH ADD DL, 30H CMP DL, 39H JLE print ADD DL,07H print: MOV AH,2H INT 21H DEC CH JNZ next
汇编语言基础知识
![汇编语言基础知识](https://img.taocdn.com/s3/m/39b92fc177eeaeaad1f34693daef5ef7ba0d1206.png)
汇编语⾔基础知识常⽤汇编指令⼀、数据传输指令它们在存贮器和寄存器、寄存器和输⼊输出端⼝之间传送数据.1. 通⽤数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压⼊堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压⼊堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压⼊堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器⾥字节的顺序XCHG 交换字或字节.( ⾄少有⼀个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG ⽐较并交换操作数.( 第⼆个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第⼀个操作数⾥ )XLAT 字节查表转换.── BX 指向⼀张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )2. 输⼊输出端⼝传送指令.IN I/O端⼝输⼊. ( 语法: IN 累加器, {端⼝号│DX} )OUT I/O端⼝输出. ( 语法: OUT {端⼝号│DX},累加器 )输⼊输出端⼝由⽴即⽅式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535.3. ⽬的地址传送指令.LEA 装⼊有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送⽬标指针,把指针内容装⼊DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送⽬标指针,把指针内容装⼊ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送⽬标指针,把指针内容装⼊FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送⽬标指针,把指针内容装⼊GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送⽬标指针,把指针内容装⼊SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装⼊AH.SAHF 标志寄存器传送,把AH内容装⼊标志寄存器.PUSHF 标志⼊栈.POPF 标志出栈.PUSHD 32位标志⼊栈.POPD 32位标志出栈.⼆、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的⼗进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEC 求反(以 0 减之).CMP ⽐较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的⼗进制调整.MUL ⽆符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整. DIV ⽆符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.OR 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上⼋种移位指令,其移位次数可达255次.移位⼀次时, 可直接⽤操作码. 如 SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI ⽬标串段寄存器:⽬标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表⽰重复操作中SI和DI应⾃动增量; 1表⽰应⾃动减量.Z标志⽤来控制扫描或⽐较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) CMPS 串⽐较. ( CMPSB ⽐较字符. CMPSW ⽐较字. )SCAS 串扫描.把AL或AX的内容与⽬标串作⽐较,⽐较结果反映在标志位.LODS 装⼊串.把源串中的元素(字或字节)逐⼀装⼊AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串.是LODS的逆过程.REP 当CX/ECX>0时重复.REPE/REPZ 当ZF=1或⽐较结果相等,且CX/ECX>0时重复. REPNE/REPNZ 当ZF=0或⽐较结果不相等,且CX/ECX>0时重复. REPC 当CF=1且CX/ECX>0时重复.REPNC 当CF=0且CX/ECX>0时重复.五、程序转移指令1>⽆条件转移指令 (长转移)JMP ⽆条件转移指令CALL 过程调⽤RET/RETF过程返回.2>条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1JA/JNBE 不⼩于或不等于时转移.JAE/JNB ⼤于或等于转移.JB/JNAE ⼩于转移.JBE/JNA ⼩于或等于转移.以上四条,测试⽆符号整数运算的结果(标志C和Z).JG/JNLE ⼤于转移.JGE/JNL ⼤于或等于转移.JL/JNGE ⼩于转移.JLE/JNG ⼩于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC ⽆进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为 "0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 "1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯⽚引线TEST为⾼电平时使CPU进⼊等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置⽅向标志位.CLD 清⽅向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建⽴段寄存器寻址.ENDS 段结束.END 程序结束.OD软件使⽤⼊门级教程⼀、基本配置OllyDbg的运⾏只要解压到⼀个⽬录下,运⾏OllyDBG.exe 就可以了。
汇编语言程序设计 上机基本操作
![汇编语言程序设计 上机基本操作](https://img.taocdn.com/s3/m/c7538dce4028915f804dc270.png)
2.编辑命令 (1) . 帮助命令 Ctrl+J 用来查看系统提供的帮助信息. (2).退出编辑命令 a. Ctrl+KD或PF1键命令,将当前被编辑的文件存入磁盘,然 后退出编辑壮态,回到”起始命令表”; b. Ctrl+KX或KD. 但返回的是操作系统下; c. Ctrl+KQ或PF2键.它放弃当前被编辑文件,返回到”起始 命令表”. 3.光标移动命令 可以用Ctrl+字母(E,X,S,D,R…)实现光标的移动. 4.删除与插入命令 Ctrl+G,+T,+Y,或用DEL进行删除操作;用Ctrl+V,+N进行插入 5.打印命令: 按下P键后,屏幕上显示是否输出到磁盘上(Y/N)? 你可以按要求选择.
汇编语言程序设计
汇编语言上机,可使用IBM-PC兼容机,使 用DOS操作系统,若是Windows操作系统,要切 换到DOS操作系统.启动MS-DOS操作系统,在 计算机启动时,按ESC键,进入操作系统选项,并 切换到MS-DOS操作系统. 系统里必须安装有 WordStar或PCED或EDLTN软件.WordStar是 文字处理软件;PCED是全屏幕编辑程序;EDLIN 是行编辑程序.在下面的操作中一一见绍……..
五、调试程序DEBUG 1。DEBUG程序的调用 在DOS提示下, C>DEBUG [D:] [path] [文件名] [参数1] [参数2] 2.DEBUG的主要命令 (1).显示内存单元内容的命令 D -D[地址]或[范围] (2).修改内存单元内容的命令 E -E 地址 内容表 例如:-E DS: 100 F3”XYZ” 8D 例如:-E 100: 18E4: 0100 89.78 此命令是将原100号单元的内容89改为78.
微机原理80868088汇编语言上机基本操作指
![微机原理80868088汇编语言上机基本操作指](https://img.taocdn.com/s3/m/e3d772d426fff705cc170aff.png)
8086/8088汇编语言,是在DOS环境下运行的编程语言,汇编语言是针对8086/8088 CPU的,凡兼容80X86指令系统的CPU ,都可以正常运行调试。
如目前使用的Windows 2000 / Windows 2003 / Windows XP等系统下都可以编辑、调试汇编语言程序。
一、进入编辑调试环境1.开始→运行,在运行框输入CMD而后回车,即进入DOS环境。
2.开始→程序→附件→C:命令提示符,也可进入DOS 环境。
二、使用到的软件程序1.源程序编辑软件:EDIT.EXE,也可用其他任意编辑软件,如Windows 环境下记事本,但最后扩展名要改为.ASM,否则无法汇编。
2.汇编程序(MASM.EXE或TASM.EXE),将编辑好的.ASM源程序汇编成目标文件.OBJ。
OBJ是程序编译后的二进制文件,在通过链接器和资源文件链接就成exe文件,OBJ只给出了程序的相对地址,而EXE是绝对地址。
3.连接程序(LINK.EXE或TLINK.EXE),LINK又称链接器,把一个或多个目标文件(.obj)链接成可执行(.exe)文件。
4.调试程序(DEBUG.EXE或TD.EXE),DEBUG,俗称“抓臭虫”,DOS 系统有力的侦错,跟踪程序运行,检查系统数据的工具程序,它是在字符界面下以单字符命令方式工作。
要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力,当然,它为汇编语言程序员提供了有效的调试手段。
需要说明的是,EDIT、MASM、LINK、DEBUG是微软操作系统推出的汇编连接调试工具。
在一般教学上使用就足够了。
而TASM、TLINK、TD是Borland公司推出的。
到目前为止,TASM的最后一个版本是5.0版,这个版本支持WIN32编程,并单独为WIN32编程附带有一整套32位程序:32位的编译器TASM32.EXE、连接器TLINK32.EXE和资源编译器BRC32.EXE。
实验三 汇编语言程序上机操作方法
![实验三 汇编语言程序上机操作方法](https://img.taocdn.com/s3/m/2625412a4b73f242336c5f5f.png)
一 T AX=0233 BX=0000 CX=0011 DX=0038 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B65 ES=0B65 SS=0B75 CS=0B75 IP=000B NV UP EI PL NZ NA PO NC_ 0B75:000B CD21_ INT_____21_ ・ 在_DEBUG_状态下执行程序 一 G 8 Program terminated normally ・ 退出 DEBUG 一 Q_ 2. 比较字符串_bjchx_ 编写一程序,比较两个字符串_string1_和 _string2_所含的字符是否相同,若相同则显示‘Match’ ,否则,显 示‘No_Match’ 。 参考程序如下:(程序名:SY3-2.ASM) D_SEG SEGMENT STRING1 DB '12345' STRING2 DB '1a345' MATCHSTR DB 'MATCH$' NOMATCHSTR DB 'NO MATCH$'
实验注意事项 1.如果使用的是 MASM5.1 的汇编工具,应包括以下文件:MASM 宏汇 编程序文件 LINK 连接程序文件CREF 索引程序文件(也可不用) EDIT 全屏幕文本编辑程序(或其他文字处理系统) 2.能用宏汇编通过的汇编语言源程序与在 DEBUG状态下运行的汇编 语言程序不同,必须是一个完整的程序,有各逻辑段的定义,而在 DEBUG 状态下运行的汇编语言源程序只是其程序段。 3.连接程序 LINK 是把一个或多个独立的目标程序模块装配成一个 可重定位的可执行文件,扩展名为.EXE。 实验与思考 1. 机器语言(Machine Language)、汇编语言(Assembler Language) 和高级语言(High_Level_ Language)的区别? 2.DOS 2 号功能调用和 DOS 9号功能调用的区别? 3.利用 DEBUG 调试程序过程中,应注意什么?