汇编语言实验讲义实验2

汇编语言实验讲义实验2
汇编语言实验讲义实验2

实验二 算术运算类操作实验 (基础与设计)

一、实验要求和目的

1、了解汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;

2、掌握各类运算类指令对各状态标志位的影响及测试方法;

3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;

4、熟悉无符号数和有符号数乘法和除法指令的使用;

5、掌握符号位扩展指令的使用。

6、掌握BCD码调整指令的使用方法

二、软硬件环境

1、硬件环境:计算机系统 windows;

2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识

本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:

1.加减法处理指令

主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。

2.乘除法指令和符号位扩展指令

主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW和从字扩展到双字的指令CWD。

3.BCD码的调整指令

主要有非压缩的BCD码加法调整指令DAA,压缩的BCD码减法调整指令DAS,非压缩的BCD码加法调整指令AAA,非压缩的BCD码减法调整指令AAS,乘法的非压缩BCD 码调整指令AAM,除法的非压缩BCD码调整指令AAD。

8088/8086指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表1所示的数据类型进行数据运算。

二进制 BCD码

数制

带符号无符号组合非组合运算符+、-、×、÷+、-+、-、×、÷

操作数字节、字、多精度字节(二位数字)字节(一位数字)

表1 数据类型数据运算表

各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不再赘述。

四、实验内容与步骤

1、对于两组无符号数,087H和034H,0C2H和5FH,试编程求这两组数的和差积商,并考

虑计算结果对标志寄存器中状态标志位的影响:

计算状态标志

表达式结果 CF AF ZF OF SF PF 087H +034H

087H -034H

087H *034H

087H/034H

0C2H+5FH

0C2H-5FH

0C2H*5FH

0C2H/5FH

总结各运算对状态标志位的影响,及其意义。

2、在数据段定义了两个多精度的有符号16进制数,FIRST和SECOND ,1)求两数的和

与差,并将结果存放在THIRD为首地址的缓冲区中;2)如果把两组数据当作十进制数据

来处理,再次求两数的和与差,并将结果存放在FORTH为首地址的缓冲区中。试编程实现

上述运算。

FIRST DW 45 H,82H,96 H,57H

SECOND DW 12 H,46H,83 H,45H

16进制结果 10进制结果FIRST +SECOND

FIRST -SECOND

3、编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V均为16位带符号数,假设初始数

据分别装入X、Y、Z、V单元,要求上式计算结果的商存入AX,余数存入DX寄存器。同

学自行给出初始值加以验证程序。

五、实验要求

(1)画出各程序流程图;

(2)列出程序清单,加上适量注释;

(3)回答思考问题;

(4)记录实验结果。

(5) 完成实验报告(实验材料上的内容简写,自己的工作要详尽)。

汇编语言实验2

计算机工程系实验报告 课程名称:汇编语言 实验项目名称:用机器指令和汇编语言指令编程 班级:15级计科4班姓名:梁红梅学号:15091413 一、实验目的: 1.学习Debug中D命令的使用方法,掌握查看指定内存单元的内容的指令,其中本实验中 主要掌握“d段地址:偏移地址”的格式; 2.了解Debug 中D命令程序的执行者:CPU,了解D命令的执行过程; 3.掌握CPU在访问内存单元时的主要过程; 4.学习怎样利用在Debug中cs、ds、ss、es这4个段寄存器,简化debug命令格式。 二、实验要求: 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax= Add ax,[2] ;ax= Mov bx,[4] ;bx= Add bx,[6] ;bx= Push ax ;sp= 修改的内存单元的地址是内容为 Push bx ;sp= 修改的内存单元的地址是内容为 Pop ax ;sp= ;ax= Pop bx ;sp= ;ax= Push [4] ;sp= 修改的内存单元的地址是内容为 Push [6] ;sp= 修改的内存单元的地址是内容为

三、实验数据记录: 1.进入Debug后使用-a命令将程序写入内存 2.通过使用-t命令将写入内存的程序逐一执行,直到命令执行完毕

三、实验结果及分析: 1.mov ax,[0] 执行完成后 ax=C0EA; 2.add ax,[2]执行完成后ax=C0FC; 3.mov bx,[4] 执行完成后 bx=30F0; 4.add bx,[6]执行完成后 bx=6021; 5.push ax 执行完成后 sp= 00FE 修改的内存单元的地址是 2200:00FE 内容为C0FC 6.push bx 执行完成后 sp= 00FC 修改的内存单元的地址是 2200:00FC 内容为6021

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

汇编语言实验讲义实验2

实验二 算术运算类操作实验 (基础与设计) 一、实验要求和目的 1、了解汇编语言中的二进制、十六进制、十进制、BCD码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握BCD码调整指令的使用方法 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 本实验主要进行算术运算程序设计和调试,涉及到的知识点包括: 1.加减法处理指令 主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。 2.乘除法指令和符号位扩展指令 主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW和从字扩展到双字的指令CWD。 3.BCD码的调整指令 主要有非压缩的BCD码加法调整指令DAA,压缩的BCD码减法调整指令DAS,非压缩的BCD码加法调整指令AAA,非压缩的BCD码减法调整指令AAS,乘法的非压缩BCD 码调整指令AAM,除法的非压缩BCD码调整指令AAD。 8088/8086指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表1所示的数据类型进行数据运算。 二进制 BCD码 数制 带符号无符号组合非组合运算符+、-、×、÷+、-+、-、×、÷ 操作数字节、字、多精度字节(二位数字)字节(一位数字) 表1 数据类型数据运算表 各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不再赘述。

汇编实验报告2-1

《汇编语言程序设计》第二次上机2-1实验报告 院系:计算机科学与技术 专业:信息安全 班级:0903班 姓名: 学号: 时间:2011-6-6 地点:南一楼808

一、实验目的 (3) 二、题目与实验要求 (3) 三、寄存器分配和变量定义说明: (3) 四、流程图 (5) 五、源程序及注释 (7) 六、实验步骤 (13) 七、实验记录 (13) 八、体会 (16)

一、实验目的 1、加深对一些常用的汇编指令的理解; 2、加深对常用DOS功能调用指令的理解; 3、进一步熟悉TD的使用。 二、题目与实验要求 1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。 要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。 (2)请事先指出依次执行每条程序指令后(AX)的内容。 (3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。 (4)记录上机执行后与(2)、(3) 中对应的内容。 2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。 要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。 (2)请事先画出数据段中数据的存储形式。 (3)请事先指出依次执行每条程序指令后相应寄存器中的内容。 (4)请事先给出各调指令在汇编后的形式。 (5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。 不一致的应分析错误原因。 3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。 要求:(1)请事先指出程序运行结束后,显示器显示的内容。 (2)若将NUM的定义改成如下形式: NUM DB 35 显示的结果是什么? (3)若将NUM的定义改成如下形式: NUM DB 59 显示的结果是什么? (4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。 4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。 要求:(1) 使用10号功能调用输入字符串; (2) 使用9号功能调用输出提示信息; 提示:先比较长度是否相等。 5 选做题 输入一个无符号的数字串,然后以16进制形式显示出串的值。 例如: INPUT A NUMBER : 59 RESULT : 3BH 其中下划线上的内容(59)为程序运行时输入的串。 三、寄存器分配和变量定义说明:

山东大学汇编语言上机实验——实验二

程序的基本结构练习 一:循环程序设计 一、实验目的 (1) 加深对循环结构的理解; (2) 掌握循环程序的设计方法; (3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。 二、实验内容 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。 3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。三、算法描述流程图 实验内容1、2、3的流程图分别为图1、图2、图3。

四、实验步骤 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。1)输入源程序: DA TA SEGMENT BUF DW 23,123,-12,-210,45,0,90,-453 BUF1 DW 8 DUP(0) BUF2 DW 8 DUP(0) A DW B DW DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DA TA START: MOV AX, DATA MOV DS, AX LEA BX, BUF LEA SI, BUF1 LEA DI, BUF2 MOV A,0 MOV B,0 MOV CX,8 L0: MOV AX,[BX] CMP AX,0 JGE L1 MOV [DI],AX ADD DI,2 INC B JMP NEXT L1: MOV [SI],AX ADD SI,2 INC A NEXT: ADD BX,2 LOOP L0 MOV AH, 4CH INT 21H CODE ENDS END START 2)运行程序。 3)检查结果无错误后将结果记录下来。 2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。 1)输入源程序: DA TA SEGMENT STR DB 'HOW arE YoU!',0 DA TA ENDS

汇编语言——输入输出程序设计实验

实验四输入/输出实验(2学时综合性实验) 1.实验目的 (1) 掌握输入输出程序设计的概念和方法。 (2) 了解PC机外围芯片8259的功能。 (3)学习如何在PC机上编写具有输入输出功能的程序,包括8259芯片的使用方法。 2.实验说明 本实验要求自行编写一个显示器输出处理程序,它可以完成内存中保存的一串字符在屏幕显示, 因此本实验既属于输入输出实验,也属于中断实验。 3.实验内容 编写一个显示器输出处理中断程序(名为NEW09),实现DOS 21H中断的9号功能,在屏幕上输出内存缓冲区BUF中以”$”结束的一串字符串。要求:缓冲区的偏移地址采用DX寄存器进行传递。 4.实验准备 (1) 预习输入输出程序设计的特点和方法。 (2) 仔细阅读参考程序,弄清外围芯片接口初始化的意义和方法。 5.实验步骤 (1) 建立源文件,并通过汇编和连接,产生可执行文件。 (2) 运行程序,观察常规字符键及功能键按下时程序的反应, DATAS SEGMENT buf db'li hongbin','$';此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS

main proc far START: mov al,68h mov ah,35h int 21h push es push bx push ds mov bx,offset buf mov dx,offset new09 mov ax,seg new09 mov ds,ax MOV AX,DATAS MOV DS,AX pop ds pop bx pop es sti mov al,68h mov ah,25h int 21h main endp

大学课程汇编语言的实验报告

实验报告 实验课程: 学生姓名: 学号: 专业班级:电气信息类III班 2011年12月20日

目录 (1)汇编语言程序上机过程 (2) (2)字符串处理程序实验 (6) (3)子程序实验 (13) (4)中断程序实验 (21) (5)C++调用汇编子程序 (25)

南昌大学实验报告 ---(1)汇编语言程序上机过程学生姓名:学号:专业班级: 实验类型:□验证■综合□设计□创新实验日期:2011.11.12/13实验成绩:一、实验目的 熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。 二、实验内容 1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用; 2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP; 3.利用的INT21H的1号功能实现键盘输入的方法; 三、实验环境 PC微机 DOS操作系统或Windows操作系统 MASM.EXE,LINK.EXE,https://www.360docs.net/doc/0b16735667.html,或宏汇编集成环境 四、实验要求 1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容; 2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法; 3.阅读下面程序段。 五、主要实验步骤 程序: data segment message db'This is a sample program of keyboard and disply' db0dh,0ah,'Please strike the key!',0dh,0ah,'$' data ends stack segment para stack'stack' db50dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax mov dx,offset message mov ah,9 int21h again:mov ah,1

实验一熟悉汇编语言上机环境.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

汇编语言实验讲义

《汇编语言程序设计》实验指导书 计算机系宋勤 《汇编语言》实验学时分配表 实验一汇编语言程序上机过程以及调试 一、预习内容 . 工具软件、的使用 . 常用命令的使用: . 完整程序设计方法的格式。 二、目的要求 . 掌握常用工具软件、的使用 . 掌握常用命令: 能灵活使用这些命令调试程序 . 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。 三、实验内容 用两种方法把字符串复制到串中去; (1)从左到右的方向复制 (2)从右到左的方向复制 ' $' (?) ;************************************************ , , : 实验步骤: )用文字编辑工具(记事本或)将源程序输入完整后保存在:\下,注意保存时将文件扩展名改为(如)。 )打开桌面的“命令提示符”程序进入命令操作,先用命令改变路经,接着用”文件名” (如,这里文件名可以不带扩展名) 对源文件进行汇编,产生文件和文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 )用”文件名” (如;) 将文件连接成可执行的文件()。 )用调试程序,熟悉命令的使用: ()打进入控制,显示提示符‘‘。 ()用命令执行程序,可得与步骤相同的结果,也可用命令逐条运行这些指令,每运行一

行检查并记录有关寄存器及的变化情况,并注意标志位有无变化。 ()用命令检查键入的程序并记录,特别注意左边的机器码和指令地址。如果一条命令没有显示完全,可以再次输入命令,该命令会紧接着上一个命令的输出继续显示。 ()用命令’地址’设置断点,如,表示将断点设置在代码段的偏移地址为的指令前,并执行到该断点前。其中,命令中的地址项可以从上条命令的运行结果获得。 ()用命令查看各寄存器的情况。 ()用命令查看数据段的情况,表示从偏移地址开始,也可以指定其他偏移地址值。 ()用命令‘地址’的方式修改数据区的字符串,其中’地址’指需要修改的数据段内存单元偏移地址,可根据上条命令获得。如表示从偏移地址开始修改数据。 ()再次用命令执行程序,查看执行结果。 ()用命令退出,如果在上述步骤中碰到异常,可以先用命令退出后再进入调试。 四、实验报告或作业 .分析程序,画出程序流程图 .汇编,连接及调试时产生的错误,其原因及解决办法。 .思考: ) 上述实验中用修改数据段的内容,是否改变原文件的内容? ) 用单步执行命令运行程序,运行到 , ,指令后,和寄存器内容前后有何变化,产生变化的原因是什么? 附使用: .打进入 ,显示提示符‘‘。 .退出命令 .显示内存命令起始地址结束地址 .修改内存命令起始地址,连续修改打空格键。打回车键退出命令。 .检查寄存器命令 标志位显示 .修改寄存器命令寄存器名 .小汇编命令起始地址,不输入指令打回车键退出命令。 .反汇编命令起始地址结束地址 .文件命名命令盘号:文件名 .读文件命令内存地址 .写文件命令内存地址 .读扇区命令内存地址盘号(:) 扇区号扇区数 .写扇区命令内存地址盘号扇区号扇区数 .运行命令起始地址结束(断点)地址 .单步命令起始地址运行指令数,进入子程序内部。 .单步命令起始地址运行指令数,不进入子程序内部。 .内存搬家命令起始地址结束地址目的地址 标志位显示 .修改寄存器命令寄存器名 .小汇编命令起始地址,不输入指令打回车键退出命令。 .反汇编命令起始地址结束地址 .文件命名命令盘号:文件名 .读文件命令内存地址

汇编语言(第2版)王爽著 课后实验报告详解

汇编语言实验报告 : 班级学号 学生姓名 提交日期 成 绩

实验1-1如下: 用E命令将指令写入内存:

用A命令将指令写入内存: 实验1-2代码如下: 用a命令在2000:0000处写如要写如的代码,然后用R命令来修改CS为2000,IP修改为0,然后用T命令执行,直到AX中的值为10,因为是默认为十六进制,所以ax中的0010实际代表十进制的16。如图:

实验1-3: 用D 命令输入内存fff0h~fffffh,则可看到:

生产日期为06/15/09在地址为FFFF5~FFFF12处,现在用E命令随便修改一下有: 在window7下虚拟的dos中可以改,但如果重新打开dos中的debug 则日期任然不会改变,因为那是ROM。 实验1-4代码如下:

内存地址为B800:0开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII 码,后一个(高)为要显示的颜色,内存B800:0和B800:1这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有80个字符,对应的内存占160个字节 实验2-1:(按实验结果填空) Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax=5BEA Add ax,[2] ;ax=5CCA Mov bx,[4] ;bx=30F0 Add bx,[6] ;bx=6026 Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCA Push bx ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是6026 Pop ax ;sp=00FE; ax=6026. Pop bx ;sp=0100; bx=.5CCA Push [4] ;sp=00FE; 修改的内存单元的地址是2200:00FE内容是30F0 Push [6] ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是2F36 实验截图如下:

汇编语言上机实验汇总

汇编语言程序设计的实验环境及实验步骤 知识提要: 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

汇编语言实验

汇编语言实验大纲 一、说明 (一)实验教学目的 本课程为计算机应用专业的必修课程,主要讲述微机的体系结构和汇编语言程序设计方法。为配合这门课程的正常教学,取得良好的教学效果,培养学生实际的动手能力,使学生熟练掌握汇编语言分支、循环、子程序及输入输出程序的设计,掌握DOS、BIOS功能调用方法,掌握文件的读写方法。 (二)实验要求 掌握计算机的基本系统结构,了解掌握汇编语言 (三)实验课时安排 二、实验内容 实验一 DEBUG的应用 实验目的:熟悉DEBUG的应用,为学习指令系统打好基础。 实验内容:1.利用DEBUG观察寄存器的值。

2.直接汇编指令,单步调试,编辑数据等。 实验二指令系统实验: 实验目的:1.掌握指令系统,熟悉DEBUG的使用。 2.掌握8086的编程结构。 实验内容:1.利用DEBUG 直接向内存中汇编课堂上讲过的指令。 2.单步跟踪调试,观察寄存器的变化和指令执行的结果,加深对 指令的理解。 实验三汇编语言语法练习 实验目的:1.学习汇编源程序的编辑、编译、链接的全过程。 2.学习EDIT、MASM及LINK的使用 实验内容:1.在存储单元A起有两字节的无符号加数,在存储单元B起有两字节的无符号被加数,编写一段程序,求其两数相加,结果存回A单元处,然后汇编、链接、运行。 2.试编写一程序,比较两个字符串STRING1和STRING2所含的字符是否相同。若相同,则显示“Match”;否则,显示“No match” 实验四分支程序设计 实验目的:掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧法. 实验内容:1.将字符串转换成大写字母字符串。 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环境下鼠标单击“开始”→“运行”,在“运行”中输入“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.设计程序。实现Y=2X+3,X是一位十进制数。要求X从键盘输入,在下一行 显示“Y=2X+3=”以及十进制计算结果。 data segment\x db?\y dw?\mess1db0ah,0dh,'input x:$'\mess2db 0ah,0dh,'Y=2X+3=$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let3:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\cmp al,'0'\jb out1\ cmp al,'9'\ja out1\and al,0fh\mov bl,2\mul bl\add ax,3\mov y,ax\mov cx,0\mov bx,10\let0:\mov dx,0\inc cx\idiv bx\push dx\cmp ax,0\jne let0\mov dx,offset mess2\mov ah,9\int 21h\let1:\pop ax\add ax,0030h\mov dl,al\mov ah,2\int21h\ dec cx\cmp cx,0\jnz let1\jmp let3\out1:\mov ah,4ch\int21h\ code ends\end start 2.编写程序,将键盘输入的小写字母变为大写字母显示在屏幕上,输入小写字 母以外的其它字符则退出。 data segment\mess1db0ah,0dh,'xiaoxieinput:$'\mess2db 0ah,0dh,'daxieoutput:$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let2:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\cmp al,'a'\jb out1\ cmp al,'z'\ja out1\mov bl,al\mov dx,offset mess2\mov ah,9\int 21h\let0:\sub bl,20h\mov dl,bl\mov ah,2\int21h\jmp let2\out1:\mov ah,4ch\int21h\code ends\end start 3.设计程序。实现Z=X/4+16*Y,X和Y都是一位十进制数。要求从键盘输入, 在下一行显示“Z=X/4+16*Y”以及十进制计算结果。 data segment\mess1db0ah,0dh,'input x:$'\mess2db0ah,0dh,'input y:$'\ mess3db0ah,0dh,'z=x/4+16*y=$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let0:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\mov cl,2\sub al,30h\ mov ah,0\sar ax,cl\mov bl,al\mov dx,offset mess2\mov ah,9\int 21h\mov ah,1\int21h\sub al,30h\mov ah,0\mov cl,4\sal ax,cl\ add al,bl\mov bx,ax\mov dx,offset mess3\mov ah,9\int21h\let1:\ mov ax,bx\mov cx,0\mov bx,10\let2:\mov dx,0\inc cx\idiv bx\ push dx\cmp ax,0\jne let2\let3:\pop ax\add ax,0030h\mov dl,al\ mov ah,2\int21h\dec cx\cmp cx,0\jne let3\mov ah,4ch\int

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个节内容

说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ① D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容 -D 200 ;显示DS段, 0200H开始的128个字节内容

汇编语言实验指导书.

汇编语言实验指导书纪平张雷编写 安徽工业大学计算机学院 二00四年三月 目录 实验一DEBUG的启动及其基本命令的使用 (2 实验二内存操作数及寻址方法 (6 实验三汇编语言程序的调试与运行 (8 实验四查表程序设计 (10 实验五系统功能调用 (12 实验六循环程序设计 (13 实验七分支程序设计 (15 实验八子程序设计 (18 实验九综合程序设计 (20 附录实验报告 (21 实验一DEBUG的启动及其基本命令的使用一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容:

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG程序的启动 在DOS提示符下,可键入命令: C>DEBUG[d:][path][文件名][ 参数1][参数2] 其中文件名是被调试文件的名称,它须是执行文件(EXE,两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需 的DEBUG命令。 在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。 2、DEBUG的主要命令 (1汇编命令A,格式为: -A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机 器代码相继存放在从指定地址开始的存储器中。 (2反汇编命令U,有两种格式: 1-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上 一个U命令的最后一条指令的下一个单元开始显示32个字节。

汇编语言上机试验指导

作实验2 【1】.有空加作实验【4】(1). 实验2 算术及位串处理程序 【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。 要求见书: 参考程序: data segment asc db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,4 rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h mov ah,4ch int 21h code ends end start 【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。 要求:(1) 字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。并指出不相等的位置。 参考书上例3.51,题目改为MESS2 定义为从键盘输入缓冲区,键盘输入缓冲区定义: mess2 DB 9,?,9 DUP(?) 例3.51 在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。若相等显示‘Y’,否则显示‘N’。编制程序如下所示。

汇编上机实验

从键盘接收两个不大于5 的十进制数字,并以十进制数据形式显示其和。 编程提示: 该程序中要求的均为一位数据的输入输出,暂时不考虑多位数据,请输入0~5 之间的数据,显示的结果为0~9。请不要输入两个5,以免出现不能直接输出的情况。 data segment data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov ah,01h int 21h mov bl,al sub bl,30h ;将输入的数字变成16进制数后放在bl中 ;为了实现bl与cl的16进制数相加 mov dl,10 ;换行(10表示换行) mov ah,02h int 21h ;mov dl,13 ;回车(13表示回车,为的是让换行之后光标移到行首) ;mov ah,02h ;int 21h mov ah,01h int 21h mov cl,al sub cl,30h;将输入的数字变成16进制数后放在cl中 mov dl,10 mov ah,02h int 21h ;mov dl,13 ;mov ah,02h ;int 21h add cl,bl add cl,30h mov dl,cl mov ah,02h int 21h mov ax,4c00h int 21h code ends end start

1、试编写程序,完成下面公式的计算。 A ←(X-Y+24)/ Z的商, B ←(X-Y+24)/ Z的余数 其中,变量X和Y是32位有符号数,变量A、B、Z是16位有符号数。 DATA SEGMENT X DD 12345H ORG 10H Y DD 12345H ORG 20H Z DW 12H ORG 30H A DW ? B DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,WORD PTR X ;将X低四位放入AX中 MOV DX,WORD PTR X+2 ;将X高四位放入DX中 SUB AX,WORD PTR Y ;X和Y的低四位相减(不考虑借位) SBB DX,WORD PTR Y+2 ;X和Y的高四位相减(考虑借位) ADD AX,24 ADC DX,0 ;只是将进位加入到DX中 IDIV Z MOV A,AX ;存放商到A MOV B,DX ;存放余数到B MOV AX,4C00H INT 21H CODE ENDS END START 2 、试将字节数据B1 拆分成两个半字节数据,分别存放于其后两个单元X 和Y 中。 编程提示: 数据段定义应包含B1、X、Y 三个变量,其中B1 变量自定义具体的数值,X、Y 变量的数值由程序赋值,分别是B1 的高低半个字节。该程序中需要使用逻辑操作完成半字节数据的拆分。 DATA SEGMENT B1 DB 12H X DB ? Y DB ? DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX

相关文档
最新文档