当前位置:文档之家› 第13讲 汇编语言及汇编过程

第13讲 汇编语言及汇编过程

第13讲  汇编语言及汇编过程
第13讲  汇编语言及汇编过程

第十三讲汇编语言及汇编过程教学方法: 讲授法

教学时数:2学时

教学目的:

1、理解源程序、目标代码、编辑、汇编等含义

2、了解汇编过程

3、掌握伪指令的使用

教学重点:

伪指令的使用

教学难点:

汇编过程

教学环节

组织教学:(2分钟)检查学生人数,强调作业要求。

引入新课:§4-1 汇编语言及汇编过程

一、汇编程序功能

源程序汇编目标程序

(汇编指令程序)(机器码指令程序)

汇编指令与机器码指令有一一对应的关系。

汇编程序是一种翻译程序,将源程序翻译成目标程序。

二、汇编程序的汇编过程

汇编有两种方法:手工汇编、机器汇编。

1、手工汇编:

第一次汇编:确定地址,翻译成各条机器码,字符标号原样写出;

第二次汇编:标号代真,将字符标号用所计算出的具体地址值或偏移量代换。

源程序地址目标程序

第一次汇编第二次汇编 ORG 1000H

START:MOV R0,BUFFER-1 1000 A82F A82F MOV R2,#00H 1002 7A00 7A00 MOV A,@R0 1004 E6 E6

MOV R3,A 1005 FB FB

INC R3 1006 0B 0B

SJMP NEXT 1007 80NEXT 8005

LOOP:INC R0 1009 08 08

CJNE @R0,#44H,NEXT 100A B644NEXT B64401

INC R2 100D 0A 0A

NEXT:DJNZ R3,LOOP 100E DB LOOP DB F9

MOV RESULT,R2 1010 8A2A 8A2A

SJMP $ 1012 80FE 80FE

BUFFER DATA 30H

RESULT DATA 2AH

END

2、机器汇编

两次扫描过程。

第一次扫描:检查语法错误,确定符号名字;

建立使用的全部符号名字表;

每一符号名字后跟一对应值(地址或数)。

第二次扫描:是在第一次扫描基础上,将符号地址转换成真地址(代真);

利用操作码表将助记符转换成相应的目标码。

三、伪指令

伪指令是告诉汇编程序,如何汇编源程序的指令。

伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。

1、起始地址伪指令 ORG

ORG addr16

用于规定目标程序段或数据块的起始地址,设置在程序开始处。

2、汇编结束伪指令 END

告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现一次,在末尾。

3、赋值伪指令 EQU

告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。

格式:标号名称 EQU 数值或汇编符号

“标号名称”在源程序中可以作数值使用,也可以作数据地址、位地址使用。

先定义后使用,放在程序开头。

4、定义字节伪指令 DB

告诉汇编程序从指定的地址单元开始,定义若干字节存储单元并赋初值。

格式: [标号:] DB 字节数据或字节数据表

5、定义字伪指令 DW

从指定地址开始,定义若干个16个位数据,高八位存入低地址;低八位存入高地址。

例、 ORG 1000H

PIOI: DW 7654H,40H、12、‘AB’

6、数据地址赋值伪指令 DATA

将表达式指定的数据地址赋予规定的字符名称

格式:字符名称 DATA 表达式

注:该指令与EQU 指令相似,只是,可先使用后定义,放于程序开头、结尾均可。

7、定义空间伪指令 DS

从指定地址开始,保留由表达式指定的若干字节空间作为备用空间。

格式: [标号:] DS 表达式

例2、 ORG 1000H

DS 0AH

DB 71H,11H,11H ;从100BH开始存放71H、11H、11H。

注:DB、DW、DS 只能用于程序存储器;而不能用于数据存储器。

8、位地址赋值伪指令 BIT

将位地址赋予规定的字符名称。

格式:字符名称 BIT 位地址

例3、 X1 BIT P12

相当于 X1 EQU 92H

小结:

1、为什么要对汇编程序进行汇编?

2、机器汇编的过程是怎样的?

3、常用伪指令的功能是什么?

汇编语言程序上机过程

汇编语言程序上机过程 实验目的: 1、掌握常用工具软件 PE,MASM和LINK的使用。 2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。 3、利用的 1号功能实现键盘输入的方法。 4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。 程序: datasegment messagedb'This is a sample program of keyboard and disply' db0dh,0ah,'Please strike the key!',0dh,0ah,'$' dataends stacksegmentpara stack 'stack' db50 dup(?) stackends codesegment assumecs:code,ds:data,ss:stack start:movax,data movds,ax movdx,offset message movah,9 int21h again:movah,1 int21h cmpal,1bh jeexit cmpal,61h jcnd cmpal,7ah jand andal,11011111b nd:movdl,al movah,2 int21h jmpagain

exit:movah,4ch int21h codeends endstart 实验步骤: 1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。 2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 3、用TYPE命令显示1产生的.LST文件。 4、用LINK将.OBJ文件连接成可执行的.EXE文件。 5、在DOS状态下运行LINK产生的。EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。 实验报告: 1、汇编,连接及调试时产生的错误,其原因及解决办法。 2、思考: 1)若在源程序中把INT 21H的'H'省去,会产生什么现象? 2)把 INT 21H 4CH号功能改为 INT 20H,行不行?

第四章汇编语言程序设计题库

第四章汇编语言程序设计练习题 一、单项选择题(共40题) 1、关于指令MOV [BX],AX,以下叙述正确的是: A、目的操作数是寄存器操作数 B、源操作数是内存操作数 C、目的操作数是内存操作数 D、源操作数是立即操作数 2、执行下列程序,设(SS)=2000H,执行后(SP)=? MOV SP,2000H MOV AX,1234H PUSH AX A.21FFEH B.20000H C.22000H D.22002H 3、运算型指令的寻址和转移型指令的寻址,其不同点在于 A.前者取操作数,后者决定程序的转移地址 B.后者取操作数,前者决定程序的转移地址 C.两者都是取操作数 D.两者都是决定程序的转移地址 4、MOV ( ),300 A、WORD PTR [DX] B、BYTE PTR [BX] C、WORD PTR [BP] D、 AL 5、汇编语言程序代码必须位于代码段中,形成代码段物理地址的寄存器对是 A.SS: SP B.CS: IP C. DS: BX D. CS: BX 6、若定义DAT DW 'A',则(DAT)和(DAT+1)两个相邻的内存中存放的数据是() A.0041H B.4100H C.××41H D.4l××H 7、执行下面的程序段后,(AX)=() TAB DW 1,2,3,4,5,6 ENTRY EQU 3 MOV BX,OFFSET TAB ADD BX,ENTRT MOV AX,[BX] A.0003H B.0300H C.0400H D.0004H 8、下面表示段定义结束的命令是() A.ENDP B.ENDS C. ENDM D.END 9、设AL、BL,中都是带符号数,当AL<BL时转至NEXT处,在CMP AL,BL指令后应选用正确的条件转移指令是()

汇编语言上机操作

汇编语言上机操作 一、建立子文件夹 如: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或.,运行时只需要在系统提示符下输入文件主名即可。例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做: D:\hb\masm>test↙ 五、汇编语言上机过程 1、编辑源程序 运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。

2、汇编 D:\hb\masm>masm add5.asm↙ 生成目标程序文件add5.obj。(如果有语法错误,会提示错误所在行号和错误类型)3、连接 D:\hb\masm>link add5↙ 生成可执行文件add5.exe。 六、DEBUG程序调用及汇编语言程序调试方法 调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。DEBUG程序为用户提供多种命令,大致有:显示和修改寄存器和存贮单元的容;执行程序中任意一段或一条指令;汇编单条源语句和反汇编机器码指令;查找字符代码;端口的输入和输出;文件装入存和写入磁盘等。用户利用这些命令可以查出任何程序功能上的错误。下面说明DEBUG程序的启动方法和主要命令意义。 (一)DEBUG程序的启动 DEBUG程序有两种启动方法。DEBUG程序是在DOS盘上的一个独立的可执行程序(扩展名为.COM),所以,DEBUG程序的第一种启动方法就是把它看作和一般的可执行程序一样,只要打入DEBUG和回车键,就可以把它装入存。但是这样启动只把DEBUG 程序本身装入存并进入等待DEBUG命令状态,还没有把要调试的程序装入存。第二种启动DEBUG的程序的方法是一次相继装入DEBUG程序和要调试的程序。打入的命令格式如下: DEBUG[d:][path]filename[.ext][parml][parm2] 其中的Filename是要调试程序的文件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。可选项[parml]和[parm2]是DEBUG程序为要调试程序准备的参数(一般不用)。 例进入DEBUG程序并装入要调试程序。其操作如下: D:\hb\masm>DEBUG add5.exe (进入DEBUG,并装配add5.exe) 此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。 如果启动DEBUG时没有指定要调试的文件名,则需要用N命令指定要调试的文件,再用L命令将其装入存。操作如下: D:\hb\masm>debug↙ - n add5.exe↙ - l↙ (二)DEBUG命令 在说明每个命令之前,先说明一些共同信息: ■DEBUG命令都是以一个英文字母开头,后面跟一个或多个参数。 ■命令字母和参数可用大写或小写或混合形式。 ■命令字母和参数中,相邻两个十六进制之间必须用逗号或空格分开.其它各部分之间有无空格或逗号都可以。 ■执行任何命令期间都可用Ctrl+Break键方法结束命令的执行。

实验3-汇编语言程序上机过程

实验3 汇编语言程序上机过程 3.1 实验目的 (1)掌握常用工具软件EDIT,MASM,和LINK的使用。 (2)伪指令:SEGMENT ,ENDS,ASSUME,END, OFFSET,DUP. (3)利用INT 21H的1号功能实现键盘输入的方法。 (4)了解.EXE和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。 3.2 实验类型 验证型实验 3.3 实验内容 data segment message DB 'THIS IS A SAMPLE PROGRAM OF KEY AND DISPLAY' DB 0DH, 0AH, 'PLEASE STRIKE THE KEY!', 0DH, 0AH,'$' data ends stack segment PARA STACK'STACK' DB 50 DUP(?) stack ends code segment assume CS:COE, DS:DATA, SS:STACK start: mov ax, data mov ds, ax mov dx, OFFSET MESSAGE mov ah, 9 INT 21h ; add your code here AGAIN: MOV AH,1 INT 21H CMP AL,61H JE ND CMP AL,61H JC ND CMP AL,74H JA ND AND AL,11011111B ND: MOV DL,AL MOV AH,2 INT 21H JMP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START

第五章汇编语言程序设计

目标程序 第五章汇编语言程序设计 ● 汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址。 ● 使用汇编语言编写的程序称作汇编语言源程序。汇编语言源程序不能由机器直接执行而必须翻译成由机器代码组成的目标程序,这个过程称为汇编。 ● 把汇编语言源程序翻译成目标程序的软件称为汇编程序。 汇编过程的含义如图: 5.1宏汇编语言的基本语法 1、常数、变量和标号 常数、变量和标号是汇编语言能识别的数据项,是指令和伪指令语句中操作数的基 本组成部分,其大小和属性与机器语言代码生成有直接关系。 一、常 数 常数是没有任何属性的纯数值。在汇编期间,它的值已经完全确定,而且在程序的 运行中也不会发生变化,它可以有以下几种类型: (1) 二进制数: 以字母B 结尾的由一串“0”和“1”组成的序列。例如:0010110B (2) 八进制数: 以字母O 或Q 结尾,由若干个0到7的数字组成的序列。例如:255Q 、377Q (3) 十进制数: 由若干个0到9的数字组成的序列,可以以字母D 结尾,也可以省略字母例如:1234D 或1234 。 (4) 十六进制数: 以字母H 结尾,由若干个0到9的数字和字母A 到F 组成的序列,且必须以数字开 头。例如: 56H,0B3FH (5)字符串常量: 用引号括起来的一个或多个字符。这些字符以ASCII 码形式存在内存中。 例如:…A?的值是41H, … B?的值是42H 二、变 量 变量通常是存放在某些存储单元的数据,这些数据在程序运行期间可以修改。变量 使用数据定义伪指令DB 、DW 、DD 等定义的。 经过定义的变量,每个变量均有三个属性: (1) 段属性(SEGMENT ) 表示变量存放在哪一个逻辑段中(即变量所在段的段地址)。

第四章 汇编语言程序设计

第四章汇编语言程序设计 1、编程将片内40H~60H单元中的内容送到以3000H为首的存储区内。 答:MOV R1,#40H MOV R2,#21H MOV DPTR,#3000H L1: MOV A,@R1 MOVX @DPTR,A INC R1 INC DPTR DJNZ R2,L1 2、编程计算下列算式的程序 (1)23H+45H+ABH+03H= MOV A,#23H ADD A,#45H ADD A,#0ABH XCH A,B ;溢出处理 ADDC A,#00H XCH A,B ADD A,#03H ;A中为结果低位,B中为高位 (2)CDH+15H-38H-46H= MOV A,#0CDH ADD A,#15H SUBB A,#38H SUBB A,#46H (3)1234H+8347H= MOV A,#34H ADD A,#47H MOV 30H,A MOV A,#12H ADDC A,#83H MOV 31,A ;30H存结果低位,31H存结果高位 (4)AB123H-43ADCH= CLR C MOV A,#23H SUBB A,DCH MOV 30H,A MOV A,#0B1H SUBB A,#3AH MOV 31H,A MOV A,#0AH SUBB A,,#04H MOV 32H,A ;30H为低位,32H为高位 3、设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中(低位在低字节,高位在高字节)。

答: MOV A ,22H ADD A ,32H MOV 42H ,A MOV A ,23H ADDC A ,33H MOV 43H ,A 4、略 5、编程计算片内RAM 区50H ~59H 单元中数的平均值,结果存放在5AH 中。 答: MOV R0,#8 MOV R1,#50H MOV A ,#00H L1: ADD A ,@R1 INC R1 DJNZ R0,L1 MOV B ,#8 DIV AB MOV 5AH ,A 6、编写计算下式的程序。设乘积和平方结果均小于255。a 、b 值分别存在片外3001H 和3002H 单元中,结果存于片外3000H 单元中。 (1)?? ???÷?=b a b a Y 25b a b a b a ><=,,, MOV DPTR ,#3001H MOVX A ,@DPTR MOV 30H ,A ;a 暂存30H 单元 INC DPL MOVX A ,@DPTR CJNE A ,30H ,L1 ;是否a=b MOV A ,#25 SJMP SAVE L1: JNC L2 MOV B ,30H MUL AB SJMP SAVE L2: MOV B ,A MOV A ,30H DIV AB SAVE: MOV DPTR ,#3000H MOVX @DPRT ,A (2)?? ???-++++=10)() (10)(222b a b a b a Y 10)(,10)(,10)(,222>+=+<+b a b a b a

8086汇编语言上机调试步骤

8086汇编语言上机调试步骤 1、在网络课堂-微机原理与接口技术-实验指导-汇编工具下载,下载汇编工具并解压,文件夹名为“masm”。 2、用鼠标点击“masm”文件夹。进入该文件夹后将看到 MASM.EXE, LINK.EXE , DEBUG.EXE3个文件进行复制操作。 3、用鼠标点击“我的电脑”再点击D: 盘,并在 D: 盘上建立新的“ MASM”文件夹,最后将上面的3个文件全部复制到该文件夹中。(注意实验所有的文件都放在该文件夹内) 4、用文本编辑软件UltraEdit-32、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源 文件的扩展各一定要是“.asm”如: example.asm 。(建议用记事本输入源程序,另存时,保持类型选择“所有文件”如图所示) 5、进入MS-DOS方式 ( 从开始>程序>附件>命令提示符) 或者(从程序 > 运行输入“cmd”回车,进入MS-DOS环境。

6、进入D:>MASM文件夹 7、显示MASM文件夹内所有文件“dir”命令 8、在 DOS 提示符下进行汇编、连接、动态调试等操作。 例如: 对源文件 example.asm 进行的操作

D:\MASM\MASM example.asm;汇编源程序操作 D:\MASM\LINK example.dbj;连接并生成扩展名为 .EXE 的可执行文件 D:\MASM\DEBUG example.exe;对可执行文件进行调试 9、要求掌握的调试命令(在 DEBUG 中使用的命令) a: U - 反汇编命令 用法: -U 代码段地址:起始偏移地址如:-U CS:100 b: D - 显示内存中的数据命令 用法: -D 数据段地址:存放数据的偏移地址如:-D DS:00 20 c: T - 单步执行程序命令 用法: -T 要执行的指令条数如:-T 3 d: G - 连续执行程序命令 用法: -G=代码段地址:指令的起始偏移地址指令的结束偏移地址如: -G=CS:100 106 注意: 结束地址一定要是操作码的所在地址 e: R - 查看和修改寄存器数据命令 用法: -R 回车如:-R AX f: F - 对内存单元填充数据命令 用法: -F 数据段地址:偏移首地址偏移未地址填入的数据 如: -F DS:100 120 ff g: Q - 退出”DEBUG“应用程序命令 10、应用例子 ;二进制到BCD转换(a.asm) ;将给定的一个二进制数,转换成二十进制(BCD)码 DATA SEGMENT RESULT DB 3 DUP(?) DATA ENDS CODE SEGMENT

实验一熟悉汇编语言上机环境.pdf

实验一熟悉汇编语言上机环境 一、实验目的 熟悉在微机上建立、汇编、连接、调试和运行汇编语言程序的全过程。 二、实验要求 1.仔细阅读本实验教程的第一章和第二章; 2.学会使用EDIT建立汇编语言源程序文件; 3.学会使用MASM将汇编语言源程序编译为目标程序的两种方法; 4.学会使用LINK将目标程序连接为可执行程序的两种方法; 5.学会使用DEBUG中的U、D、G命令。 三、实验举例 【例3.1】 编辑、汇编、连接、执行下列程序,观察实验结果。 【程序功能】该程序的功能是利用BIOS功能调用,从键盘上接收若干个字符,并将它们的ASCII码与键盘扫描码以十六进制的形式显示出来,当按下+键时,停止程序的执行。 【步骤一】 用EDIT编辑源程序,并以EXAM1.ASM为文件名存入磁盘。 程序清单如下: SSEG SEGMENT STACK STK DB 80H DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG HTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 AND AL,0FH CMP AL,10 JC HTOA1 ADD AL,07 HTOA1: ADD AL,30H RET HTOA ENDP BHTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 PUSH CX MOV CH,AL MOV CL,04 SHR AL,CL CALL HTOA MOV AH,AL MOV AL,CH CALL HTOA POP CX RET BHTOA ENDP DISASC PROCN EAR ;该子程序的功能是在光标处显示AL中的字符 PUSH AX

1632位微机原理、汇编语言及接口技术第五章课后习题答案-

1632位微机原理、汇编语言及接口技术第五章课后习题答案-

习题 5.2 在半导体存储器中, RAM 指的是 随机存取存储器 ,他可读可写,但断电后信息一般会丢失 ; 而 ROM 指的是 只读存储器 , 正常工作时只能从中读取信息, 但断电后信息不会丢失。以EPROM 芯片 2764为例, 其存储容量为 8K ×8位, 共有 8 条数据线和 13 条 地址线。用它组成 64KB 的 ROM 存储区共需 8 片 2764芯片。 习题 5.7 什么是存储器连接中的 “ 位扩充 ” 和 “ 地址扩充 ” ? 欲组成 32KB 的 RAM 存储区,在采用容量 1K ×4位的静态 RAM 芯片或容量16K ×1位的静态 RAM 芯片的情况下,各需要多少芯片? 在位方向和地址方向上各要进行什么样的扩充?请画出采用 2114芯片时的连接示意图。解答: ?位扩充—— 存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据 “ 位 ” 方向的扩充; ?地址扩充 (字扩充——当一个存储器芯片不能满足系统存储容量时, 利用多个存储器芯片在 “ 地址 ” 方向的扩充 ?组成 32KB 存储空间,用 SRAM 2114(1K ×4需要 64个芯片; ?组成 32KB 存储空间,用 DRAM 4116(16K ×1需要 16个芯片; ?它们都需要进行位扩充和地址扩充

习题 5.8 ?存储芯片为什么要设置片选信号? ?它与系统地址总线有哪些连接方式? ?采用何种连接方式可避免地址重复? ?采用哪些连接方式可节省用于译码的硬件? 解答: ?片选信号说明该存储器芯片是否被选中正常工作, 设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间 ?存储器片选信号通常与 CPU 地址总线的高位地址线相关联,可以采用“ 全译码 ” 、 “ 部分译码 ” 、 “ 线选译码 ” 方式 ?采用全译码方式可以避免地址重复 ?采用部分或线选译码可以节省译码硬件

汇编语言上机过程

第一步:编写程序 用记事本编写汇编语言程序,保存为.ASM 文件,保存时,保存类型选择“所有文件”。注意,应将汇编语言程序保存在包含MASM.EXE 及LINK.EXE 的目录下(本例中假定在C盘的MASM目录下,即“C:\MASM”)。 第二步:编译 进入DOS命令提示符环境。该环境的访问方法一:windows “开始”->“运行”,输入“cmd”),如下图: 访问方法二:windows “开始”->“程序”->“附件”->“命令提示符”,如下图所示:

进入DOS命令提示符方式: 用CD 命令进入MASM目录,如下图所示: (若个人的MASM目录在D盘下,可如下操作:)

回车后即进入存放有MASM.EXE LINK.EXE EX11.ASM 的目录D:\MASM : 现在开始用汇编程序MASM.EXE 编译汇编语言源程序EX11.ASM: 回车后开始编译:

若编译出现0处错误(如上图椭圆框内),则表示编译通过,正确生成EX11.OBJ文件: 接下来转入第四步。否则,若出现如下类似界面: 表示出现一处错误,该错误在EX11.ASM的第七行,错误为“出现未定义的符号AS”,则转入第三步。 第三步:编辑程序 用 EDIT.EXE 编辑出现错误的程序 EX11.ASM:

回车后,出现如下界面: 找到第7行,并修改相应错误。修改完成后,点击菜单“File”或用“ALT”回车打开“File”菜单,首先选择“Save”保存修改,然后选择“Exit”退出编辑状态: 重复如下编译过程,重新编译修改过的EX11.ASM,直至全部错误修改完成:

汇编语言上机实验汇总

汇编语言程序设计的实验环境及实验步骤 知识提要: 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环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立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

汇编语言上机实验

汇编语言程序设计的实验环境及实验步骤 知识提要: 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环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立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

汇编语言程序的上机过程

汇编语言的上机过程 汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。 1、建立源程序文件 建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。保存时,源程序文件的扩展名必须是ASM。 练习: (1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。(调用命令“C:\EDIT”进入EDIT 编辑器。) 源程序文件如下: DSEG SEGMENT MESSAGE DB'HOW DO YOU DO?',0DH,0AH,24H DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG BEGIN: MOV AX,DSEG MOV DS,AX MOV DX,OFFSET MESSAGE MOV AH,9 INT21H

MOV AH,4CH INT21H CSEG ENDS END 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文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。

第四章汇编语言

4.1汇编语言概述 语言分机器语言、低级语言、高级语言,机器语言由0和1构成,只有专业人士才能看懂。低级语言就是汇编语言,用助记符来表示,最贴近机器硬件,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言高级语言分为面向过程和面向对象的语言。 1 顺序结构 顺序程序设计,又叫直接程序设计。它是相对于分支程序和循环程序设计而言的。因此,可以说顺序程序是既不包含分支,又不包含循环的程序,顺序程序是从第一条指令开始,按其自然顺序,一条指令一条指令地执行,在运行期间,CPU既不跳过某些指令,也不重复执行某些指令,一直执行到最后一条指令为止。 2 分支结构 (1).分支程序设计概述 分支程序结构可以有两种形式,如图所示 (2)分支程序设计 分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。根据对条件的判断而选择不同的处理方法是人的基本智能体现。 3 循环程序设计 1.循环程序设计概述 有时我们会需要能按一定规律,多次重复执行的一串语句,这类程序叫循环程序。 循环程序一般由四个部分组成: (1)循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件的初值。 (2)工作部分:即需要重复执行的程序段。这是循环的中心,称之为循环体。 (3)修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。 (4)控制部分:用来保证循环程序按规定的次数或特写条件正常循环。 4.2 汇编语言的语句 4.2.1语句分类:汇编语言语句分为指令性语句、伪指令、宏指令。 4.2.2语句格式:[标号] 操作码 [操作数] [注释] 汇编语言源程序中的每个语句可以由4项组成,格式如下 [name] operation operand [;comment] [名字项] 操作项操作数项;注释项 下面分别说明各项的表示方法。 1.名字项 源程序中用下列字符表示名字: 字母:A~Z或a~z; 数字:0~9; 专用字符号:?、?、@、―、$; 一般来讲,名字项可以是标号或变量。 (1)标号:在代码段定义,后面跟冒号:

汇编语言程序设计实验指导

实验一汇编语言上机过程 一、上机前的软件准备: MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等) 文本编辑器(如:https://www.doczj.com/doc/af2113698.html, , TURBO.EXE , TC.EXE , C.EXE 等) 汇编程序(如:MASM.EXE , ASM.EXE,TASM.EXE 等) 连接程序(如:LINK.EXE 等) 调试程序(如:DEBUG.EXE 等) 二、汇编程序建立过程: 通过 a.建立汇编源程序────→ b.编译为目标文件──┬─→d.连接为可执行文件 ↑↓ ↓ │ c.不通过,重新修改(语句错误)││ ├──────────────────────┘│ ↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓ └────────────────────────────←e运行 ↓正确 g.完成 三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明 PROCEDURE a:建立汇编源程序(即:建立文件名.asm) 这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。 1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。 2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。 PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件) 这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程: 在DOS提示符下键入MASM filename回车 (注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM fi lename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名) 这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。MASM filename >filen (f ilen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。

汇编语言第五章答案

5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答:程序段如下: BEGIN:MOV AH,1;从键盘输入一个字符的DOS调用 INT21H CMP AL,‘a’;输入字符<‘a’吗? JB STOP CMP AL,‘z’;输入字符>‘z’吗? JA STOP SUB AL,20H;转换为大写字母,用AND AL,11011111B也可 MOV DL,AL;显示一个字符的DOS调用 MOV AH,2 INT21H JMP BEGIN STOP:RET 5.2编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 答:程序段如下: BEGIN:MOV AH,1;从键盘输入一个字符的DOS调用 INT21H CMP AL,‘a’;输入字符<‘a’吗? JB STOP CMP AL,‘z’;输入字符>‘z’吗? JA STOP DEC AL;得到前导字符 MOV DL,AL;准备显示三个字符 MOV CX,3 DISPLAY:MOV AH,2;显示一个字符的DOS调用 INT21H INC DL LOOP DISPLAY STOP:RET 5.3将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL 和DL中。 答:程序段如下: DSEG SEGMENT STORE DB4DUP(?) DSEG ENDS ┇ BEGIN:MOV CL,4;右移四次 MOV CH,4;循环四次 LEA BX,STORE A10:MOV DX,AX AND DX,0FH;取AX的低四位 MOV[BX],DL;低四位存入STORE中

第五章 汇编语言程序设计

第五章汇编语言程序设计 一、程序分析题 1 .MOV AL,10 ADD AL,AL SHL AL,1 MOV BL,AL ADD AL,BL 问:AL= BL= 解: AL=50H(或80)BL=28H(或40) 2. MOV BX,00FFH AND BX,0FFFH OR BX,0F0FH XOR BX,00FFH 问:BX= 解:2. BX=0F00H 3. XOR AX,AX MOV BX,2 MOV CX,10 LP:ADD AX,BX ADD BX,2 LOOP LP HLT (1)该程序的功能是什么? (2)程序执行后,AX= BX= CX= 解:(1)求2~20间的偶数和。(完成累加求和,即求:2+4+6+8+10+12+14+16+18+20)。(2)AX=110,BX=22,CX=0 4.设DS=1000H,有如下数据段: DATA SEGMEN ORG 10011 Xl DW 11H,22H,33H X2 DB 33H,44H,55H Y1 EQU 4321H Y2 EQU $- X2 X3 DB 88H,99H DATA ENDS

(1)该数据段共占用多少字节的存储单元? (2) Y1和Y2的值为多少?X3的值是多少? 解:(1)该数据段共占用11个字节 (2)Yl =4321H,Y2=3,X3=109H这里X3是用DB定义的,它是变量名。它的偏移地址为109H。Y1和Y2是由EQU定义的,它们是符号名,是常量。 5.下列程序段执行后,寄存器AX、BX和CX的值各为多少? ORG 1200H DA1 DW 100 ┆ MOV AX,DA1 MOV BX,0FFSET DA1 MOV CL,BYTE PTR DA1+1 MOV CH,TYPE DA1 HLT 解: AX=0064H BX=1200H CX=6400H 6.有数据段如下: DATA SEGMENT ORG 1200H BUF DB 5,6,‘78’ X1 DW 1,37H,46H Y1 EQU X1-BUF DATA ENDS (1)该程序段占有的存储单元字节数是多少? (2)Y1的值是多少? 解:(1)占10个字节单元(2)Y1=2 二、程序填空题 1. AX中有一个无符号数,若其值小于100,就加100;若其值大于等于100,就减50,但计算结果仍保存在AX中。在下面程序段每一空白处填上一条适当指令,以实现其功能。 CMP AX,100 SUB AX,50 PP:ADD AX,100 DONE:HLT 解:第一空白处填JC PP 第二空白处填JMP DONE

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

第四章汇编语言程序设计 1编程将片内40H?60H单元中的内容送到以3000H为首的存储区内。答:MOV R1,#40H MOV R2,#21H MOV DPTR,#3000H L1: MOV A,@R1 MOVX@DPT,R A INC R1 INC DPTR DJNZ R2,L1 2、编程计算下列算式的程序 1) 23H+45H+ABH+03H= MOV A , #23H ADD A , #45H ADD A , #0ABH XCH A ,B ;溢出处理 ADDC A , #00H XCH A ,B ADD A ,#03H;A中为结果低位,B中为高位 2) CDH+15H-38H-46H= MOV A,#0CDH ADD A,#15H SUBB A,#38H SUBB A,#46H 3) 1234H+8347H=

MOV A , #34H ADD A , #47H MOV 30H , A MOV A , #12H ADDC A , #83H MOV 31, A ;30H 存结果低位, 31H 存结果高位 4)AB123H-43ADCH= CLR C MOV A , #23H SUBB A , DCH MOV 30H , A MOV A , #0B1H SUBB A , #3AH MOV 31H , A MOV A , #0AH SUBB A ,, #04H MOV 32H , A ;30H 为低位, 32H 为高位 3、设有两个4位BCD 码,分别存放在 23H 22H 单元和33H 、32H 单元中,求他们的和,并 送入43H 、42H 单元中(低位在低字节,高位在高字节) 。 答: MOV A , 22H ADD A , 32H MOV 42H , A MOV A , 23H ADDC A , 33H MOV 43H , A

相关主题
文本预览
相关文档 最新文档