文档库 最新最全的文档下载
当前位置:文档库 › intel汇编Intel汇编语言程序设计

intel汇编Intel汇编语言程序设计

intel汇编Intel汇编语言程序设计
intel汇编Intel汇编语言程序设计

intel汇编:Intel汇编语言程序设计 阅读...

疯狂代码 https://www.wendangku.net/doc/551186630.html,/ ?:http:/https://www.wendangku.net/doc/551186630.html,/assembler/Article22564.html

第1章 基本概念

1.1 欢迎来到汇编语言的世界

本书着重讲述基于Intel微处理器(特别是Intel IA-32处理器家族成员)的程序设计。Intel IA-32处理器家族始于80386,并一直延续到当前最新的Pentium 4处理器(最新的32位的酷睿系列也是IA-32系列,但是64位的就是IA-64了,就是说Intel的处理器从386开始基本架构就没变,只是扩展了一些新的指令集而已,比如IA MMX,IA SSE,IA SSE 2,IA SSE 3,IA SSE 4等等)。

学习汇编需要了解几个工具的含义:

编辑器:不用说了,就用记事本就行了;

汇编编译器:将汇编语言源程序转换为机器语言的程序;

链接器:用于将编译器生成的多个文件合并链接成可执行程序;

调试器:可以跟踪程序的执行过程,以及查看内存内容;

这四类程序不用到处找,我前面介绍的那个Win-Masm都集成了,只要下载了这个工具的朋友一定注意到了,当然,强大的VC或VS也有,更强大。

汇编语言可以创建两种基本类型的程序:16位实地址模式(运行于纯MS-DOS或者DOS模拟器,当然,MS Windows也可以运行实地址模式的程序)和32位保护模式(运行于MS Windows)。后面会慢慢介绍IA-32处理器如何管理内存,如何使用实模式、保护模式和虚拟模式。也将更清楚的了解应用程序是如何通过中断服务程序、系统调用和共享内存区与操作系统进行交互的,还将了解到操作系统如何加载和执行应用程序。

汇编语言与机器语言的关系:机器语言是二进制语言,只有特定机器才能识别,汇编语言由助记符语句构成

,如ADD,MOV,SUB,CALL等,他们之间是一对一的关系,就是说每条汇编语言指令对应一条机器语言指令。

C++和Java等高级语言与汇编语言的关系:他们之间是一对多的关系,比如一条简单的C++语句会被扩展成多条汇编语言或者机器语言指令。大家比较下面两段代码(假设x和y都是整数):

// C++

x = (y + 4) * 3

; 下面是汇编实现的相同的功能

mov eax, y ;将y送至EAX寄存器

add eax, 4 ;EAX寄存器加4

mov ebx, 3 ;立即数3送至EBX寄存器

imul ebx ;EAX与EBX相乘

mov x, eax ;将EAX寄存器存放的运算结果送至x

(寄存器是CPU内部经常用于存放临时运算结果的有特定名称的存储单元。)

1.2 虚拟机的概念

这里说的虚拟机是一个抽象的概念,java虚拟机是它的一个实例。他把高级语言、汇编语言、操作系统、指令集以及底层的微指令系统直到最底层的数字电路之间的关系看作是不同层次虚拟机之间的关系。其中,数字逻

辑被称作是第0层;再上层的是微结构(第1层),也就是微指令系统,芯片制造商是不会让用户接触的,属于商业机密;普通用户可以使用的是指令集体系结构(第2层),我们程序员所能接触到的最底层了,也就是机器语言,当然,我们即使用机器语言编写好代码,在执行的时候仍然会被转换成微指令执行;再上层是操作系统(第3层),操作系统软件最终是被翻译成机器代码在第2层上运行的;我们学的汇编语言属于第4层,它既可以使用ADD、SUB和MOV等指令对应于第2层执行,也可以通过中断来调用操作系统(第3层)的功能,但最终都会被汇编成机器语言;我们用的最多的高级语言则在最高层(第5层),这层的程序通常由编译器翻译成第4层的程序,接着由编译器内建的汇编编译器立即将其翻译成机器语言。

1.3 数据的表示方法

就是二、八、十、十六各种数制的转换,不用多说了吧?重点就是要知道补码的转换方法,它是针对有符号数来说的,正数补码不变,负数取反加1,补码的补码又变回去了,对于16进制数的补码求法,一个简单的方法就是对每一位用15去减,然后加1就行了,如95c3-->6a3c+1-->6a3d,当然说的是负数,只要最高位

>=8,这个16进制数就是负数了。

对于字符的存储,就是讲的字符编码,只介绍了ASCII。

1.4 布尔运算

布尔代数是由一位从未见过计算机的19世纪中叶的数学家乔治 布尔(George Boole)发明的,基于真和假的各种运算,结果一定是真或假。他的运算符有下面3个:NOT、AND、OR,优先级就是这个顺序。在早期设计计算机的时候,人们发现这种代数正好可以用来描述数字电路。 2008-11-7 23:31:40

疯狂代码 https://www.wendangku.net/doc/551186630.html,/

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

汇编语言程序设计报告

实验一: 一、实验目的: 1. 学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2. 了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3. 掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4. 掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上 三、实验内容及算法流程、源程序清单 实验内容:编写程序,从键盘输入一个字符并回显到视频显示器上。 源程序清单: 实验1.asm 实验1.obj 实验1.exe code segment assume cs:code start: mov ah,1 int 21h mov ah,4ch int 21h code ends end start 实验二:编写程序,显示一个字符Q 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的02h号功能显示输出一个字符Y。

三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,显示输出一个字符Q。 源程序清单: 实验2.asm 实验2.obj 实验2.exe code segment assume cs:code start: mov ah,02 mov dl,'Q' int 21h mov ah,4ch int 21h code ends end start 实验三:编写程序,在屏幕上显示输出“I love DOTA” 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 考察通过调用(INT 21H)表中的0ah号功能显示输出字符串 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,在屏幕上显示输出‘I love DOTA。 源程序清单: 实验3.asm 实验3.obj 实验3.exe data segment buf db 'I love DOTA.$'

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

汇编语言程序设计报告模板总结模板计划模板.docx

《汇编语言》课程设 计报告 专业计算机科学与技术 学生姓名张竹青 班级Z计算机 151 学号1560704132 任课老师王志宏 完成日期2017年12月29日

目录 1 概述 (1) 1.1 设计目的 (1) 1.2 设计内容 (1) 2 系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (2) 3 系统概要设计 (2) 3.1 系统的功能模块划分 (2) 3.2 系统流程图 (3) 4 系统详细设计 (4) 4.1 界面设置 (4) 4.2 选择算法设置 (4) 4.3 十进制转换设置 (4) 5 测试 (5) 5.1 测试方案 (5) 5.2 测试结果 (5) 6 小结 (6) 参考文献 (7)

实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 使用汇编语言,通过实现简单计算器的一般功能,如加、减、乘、除的计算来 了解并掌握 DOS系统功能的调试方法,学会画出编程的具体流程图,同时在程序 设 计过程中熟悉各种指令的应用和意义,以及如何进行上机编辑、汇编、连接和调试。 本课程设计也是对课堂上所学的基本理论知识和程序设计方法的巩固和深化, 提高我们的编程思想、分析问题和解决问题的综合应用能力,能够编写较复杂的应 用程序,最终达到熟练地掌握结构化程序设计技术和编写汇编源程序的基本方法的 目的。 1.2 设计内容 设计一个能实现加、减、乘、除计算的程序,要求该程序接受从键盘输入的十 六进制数,当程序执行时需在文件名后直接跟上计算表达式,每当读到一个有效的 表达式时对表达式进行相应的运算后,输出用十进制数或十六进制数表示的运算结果,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单的加减乘除四则运算的 计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则 运算。具体功能如下: (1)调用中断把要做运算的两个数输入到屏幕上并用程序将他们存储起来 (2)判断用户所输入的运算是四则运算中的哪一种运算 (3)判断运算过程中是进位还是借位 (4)选择用何种输出方式 (5)实现清屏 2.2 主体功能 要求该程序接受的是十六进制数,执行相应的计算后,计算结果以十六进制数 或十进制数输出。本设计的使用说明如下: (1)按照提示选择数字 1,2,3,4 (2) 1: ADD 加法 (3) 2: SUB 减法 (4) 3: MUL 乘法

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

汇编语言程序设计教学大纲

《汇编语言程序设计》课程教学大纲 二、课程简介 汇编语言是计算机能够提供给用户使用的最快最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对程序的空间和时间要求很高的场合及需要直接控制硬件的应用场合,汇编语言的应用是必不可少三、课程目标 汇编语言课程是计算机专业的一门专业选修课。通过本课程的学习,应使学 生系统地了解计算机组成原理与内部的运行机理,掌握汇编语言程序设计及相关 知识,为学习本专业后继课程和进行与硬件有关的技术工作打下良好基础。通过 上机实验,使学生受到软硬件实验的初步训练,并培养学生分析问题和解决问题 的能力。 四、教学内容及要求 第一章基础知识 1.教学内容 (1) 为什么要用汇编语言编写程序 (2) 进位计数制与不同基数的数之间的转换 (3) 二进制数和十六进制数运算 (4) 计算机中数和字符的表示 (5) 几种基本的逻辑运算 2.基本要求 了解机器指令、代码指令、机器语言、汇编指令、汇编语言、汇编语言源程 序、汇编程序、汇编等概念;掌握进位计数制与不同基数的数之间的转换及

运算;计算机中数和字符的表示;“与”、“或”、“非”、“异或”等几种基本的逻辑运算; 第二章80X86计算机组织 1.教学内容 计算机系统概述、存储器、中央处理机和外部设备。 2.基本要求 理解计算机的硬件和软件系统及其关系。掌握计算机的基本结构及总线;存储器的内容、地址及存储器的分段;中央处理机的组成、80X86系列CPU工作寄存器构成和功能,特别是段寄存器和标志寄存器;外设接口、端口和8086/8088的端口地址范围和访问方法。 第三章80X86的指令系统 1.教学内容(重点内容) IBM PC机的寻址方式、IBM PC机的指令系统。 2.基本要求 熟练掌握IBM PC机寻址方式及物理地址的计算;数据传送、算术、逻辑、串处理、控制转移和处理机控制指令六组中的所有指令的格式、操作、及影响的标志位。了解机器语言的指令组成; 第四章汇编语言程序格式 1.教学内容 汇编程序功能、伪操作、汇编语言程序格式、汇编语言程序的上机过程。 2.基本要求 掌握DEBUG程序和命令及能用DEBUG 程序调试和运行简单小程序;汇编语言上机步骤、汇编程序的功能;数据定义及存储器分配、表达式赋值“EQU”和“=”、段定义、程序开始和结束、对准、基数控制等六类伪操作;汇编语言程序格式中的名字、操作、操作数和注释等项。 第五章循环与分支程序设计 1.教学内容 程序设计的一般步骤和基本结构、循环程序设计和分支程序设计 2.基本要求 掌握汇编语言程序的编制步骤和结构化程序设计的三种基本结构;循环的设计方法和多层循环的设计;分支程序的设计方法,并能编制相应的程序。第六章子程序结构 1.教学内容 子程序的设计方法、嵌套与递归子程序、子程序举例和DOS系统功能调用

汇编语言程序设计大纲

《汇编语言程序设计》课程教学大纲 课程编号: 0910218 课程名称:汇编语言程序设计 英文名称:Assemble Language Programming 课程类型: 专业基础课 总学时:48 讲课学时:48 实验学时:0 学分:3 适用对象: 计算机科学与技术、网络工程、信息安全及相关专业 先修课程:数字逻辑与数字系统设计、数据结构 一、课程性质、目的和任务 汇编语言程序设计是计算机科学与技术、网络工程、信息安全等专业的必修课,是进一步学习操作系统、编译、接口与通信等专业课的基础。通过本门课程的学习,学生可以加深对计算机工作原理的理解,有助于促进后续课程的学习。同时,汇编语言作为一种计算机语言工具,对于学生将来从事计算机的研究与应用是必需的,有助于提高学生的程序设计能力。 二、教学基本要求 通过本课程的学习,要求学生了解或掌握:模型机的基本结构、工作原理、寻址方式及指令系统,用汇编语言编写顺序、分支、循环、子程序、宏汇编语言程序等各种程序的技术。学会编写输入/输出程序和中断服务程序,掌握利用系统的功能调用进行程序设计的方法。掌握汇编过程和汇编程序的原理,能够正确熟练地使用编辑、汇编、链接和调试等各种软件工具。 三、教学内容及要求 1. 模型机结构。模型机系统的概述,存储器、中央处理器及外部设备与接口的基本概念、工作原理及编程方法。 2. 指令系统与寻址方式。模型机的寻址方式,机器语言指令格式,汇编语言指令系统。 3. 汇编语言程序格式。汇编程序的功能,伪操作,汇编语言程序格式。 4. 循环与分支程序设计。程序流程图的画法;分支与循环程序的设计思想与方法,重点介绍双重循环的程序设计和通过比较——判断、跳转表等方法进行分支程序设计。 5. 系统功能调用。介绍操作系统提供的BIOS、DOS等系统功能调用,学习通过功能调用进行程序设计的方法。 6. 子程序设计。子程序的设计方法,嵌套与递归子程序,堆栈在其中的应用。 7. 高级汇编语言技术。宏汇编、重复汇编、条件汇编的基本概念及其程序设计。 8. 输入输出及中断程序设计。I/O设备的数据传送方式,程序直接控制I/O方式和中断程序设计。 9. 软件工具。汇编程序、文本编辑程序、链接程序、调试程序的基本功能及汇编语言程序编写、调试、运行中的使用方法。 四、实践环节 见“汇编语言程序设计综合实验”。

《汇编语言程序设计》学习心得自主学习报告.doc

自主学习报告书 题目:学习汇编语言程序设计报告学习课程:《汇编语言程序设计》姓名: 专业: 学号: 福建工程学院国脉信息学院教务处制 二○一二年六月

学习汇编语言程序设计报告书 由于实际工作中对汇编语言程序设计应用较多,在业余时间我自主学习了北京大学出版社出版的《汇编语言程序设计》一书。这一本书介绍了80x86汇编语言程序设计的方法和技术,共分为两个部分:第一部分介绍80x86cpu的编程结构,汇编语言程序的格式和伪指令,80x86cpu的寻址方式和指令系统;第二部分深入讨论分支程序、循环程序、子程序基本程序设计方法,以及以中断为主的i/o程序设计,其中包括宏指令、多模块连接技术、汇编语言与高级语言的混合编程、dos和bios提供的常用中断调用,以及文件系统等内容。 通过本书,我深入的掌握了汇编语言的编程方法、思路和技巧,并对计算机的底层编程有一定认识;还对计算机底层运行程序的机制及计算机的工作原理有了深入的了解。 在学汇编的过程中,最重要的就是要掌握汇编语言中的指令的一些基本用法。当然要能够真正的了解其中的内涵,这样在实际的编程中也能够像运用高级语言一样灵活的变通。汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与计算机内部的结构联系应该联系很密切,而且我在学习中也深刻的了解到了这一点。比如说后来学到的寄存器、中断、还要各种寻址方式以及进栈出栈,好多的就是设计到计算机硬件。前面几章都是对计算机内部结构和一些常用的指令以及寻址方式的寻址方式。到后面学到子程序以及宏的作用才真正发现到其实跟高级语言差别不大。以C语言为例,C语言也

是由一个一个的函数组成的。没想到想汇编这样的低级语言也可以这样。在汇编语言的子程序和宏中,我个人更感觉宏的运用更像我们高级语言的子函数,通过定义好的宏,我们在后面直接调用就可以了。尤其是宏带参数的宏跟C语言中带参数的函数真的很像,根据参数的不同调用宏就能得到不同的结果。而汇编中的子程序没有这个传递参数这个功能。在调用子程序的时候要注意各寄存器中的内容。子程序是在程序执行期间由主程序调用的,它只占有它自身大小的一个空间,他不仅是源程序级别简化,形成的目标代码较短;而宏调用则是在汇编期间展开的,每调用依次进把宏定义体展开一次,它是源程序级的简化。因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间越大。如果宏调用次数较多的话,则其空间上的开销也是应该考虑的因素 汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和连接就可以了。学习汇编调试,关键就是要掌握DEBUG的运用。汇编程序把汇编语言翻译成机器语言的过程称为汇编。是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。

《汇编语言程序设计》实验报告(一)

《汇编语言程序设计》实验报告(一) 姓名学号系别班级 指导教师实验日期 课程名称《汇编语言程序设计》同组实验者 一、实验名称:实验一汇编程序和连接程序的使用 二、实验目的: 1. 熟悉汇编语言的上机环境; 2. 学习EDIT,MASM,LINK程序的使用; 3. 掌握建立、汇编、链接、运行汇编语言程序的过程。 三、实验类型:验证 四、实验材料、工具、或软件 多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。 五、实验要求 1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。 2.完成课堂例题,并用DEBUG运行,观察结果。 六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页) 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下: 1、调用https://www.wendangku.net/doc/551186630.html,程序建立汇编语言源程序.ASM 建立好的源文件以EX_1.ASM为文件名存盘 DATA SEGMENT STRING1 DB 'Visual C++ ' STRING2 DB 'Visual Basic' COUNT EQU $-STRING2 MESS1 DB 'MATCH!’,13,10,’$' MESS2 DB 'NO MATCH!’,13,10,’$' DATA ENDS code segment assume cs:code,ds:data,es:data main proc far start: push ds

《汇编语言程序设计》考核方式

考核方式与要求 期末总成绩构成:期末开卷考试60% + 平时作业10% + 实验和实验报告30%。 1、试卷考核方式与要求 “汇编语言程序设计”的课程要求是使学生具有一定的程序设计能力。虽然课程是通过80x86微处理机来开展教学的,但学习的重点不仅仅是学会80x86指令的语法和规范,更重要的是通过多读程序、多练习编写程序来掌握程序设计的基本方法和技术,要求学生在工作中遇到其他机型,都应该能利用所掌握的方法和技术顺利解决实际问题。因此,我们在教学过程的各个环节,特别是具有指挥棒作用的考核环节中,着重体现了“能力培养是首位”的指导思想。 为此,汇编课一直实行多元化考核方式,在考核评分上,平时练习和上机实验占40%,期末考试占60%。期末考试实行开卷考试,这样学生平时学习的关注点就会放在分析问题和编程实现的方法上,有利于学生开阔思路,发挥自身创造力。每年设计开卷考试的考题是有一定难度的,教师必须非常熟悉课程的知识点、重点和难点,以及体现这些知识和能力水平的多种题目类型。 2、实验方式与要求 实验的目标为:加强课堂上相关理论和技术学习的有效性;提高学生上机编程和调试的能力;培养学生科学实践的理念和独立分析问题、解决问题的能力。其设计思想是:实验内容兼顾基础性和综合性,实验题目由简单→复杂,程序功能由单一→综合,实验安排有基本要求题+自选题,实验题类型有验证型和自主创新设计型。 √实验课组织形式: 1.系教学实验室按课程要求负责上机环境配置及实验设备管理; 2.以班为单位组织上机实验,并将上机时间安排表发至每位同学; 3.每单元实验课安排一位助教(助博)负责实验指导和答疑; 4.学生每做完一个实验即可提交老师验收,老师将实验运行结果记录下来作为实验成 绩的依据。验收时教师要注意发现比较突出的好的实验例题(完成时间短、程序运行效率高); 5.要求提交实验报告,根据实验报告及实验运行结果的记录,评出实验成绩,实验成 绩一般占总成绩的30%。 √教师指导方法: 1.大课集体指导。每学期实验前教师安排一次实验指导课,讲解实验方法和实验要求; 2.每次实验课都安排助教(助博)进行个别或集体的实验指导和答疑; 3.对具有共性的、问题比较多的实验,主讲教师在课堂上再进行集体指导; 4.每学期对实验中出现的问题,对照实验题目进行分析、总结,以利于以后的教学。 5.对于实验中有创新点的学生,还可以请他上讲台为同学们介绍他的设计思路,引发大家展开讨论。

汇编语言程序设计

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期2017年10月26号 成绩 评阅人 软件学院

一、实验目的与意义 理解并熟练掌握汇编语言程序设计过程中的编辑、汇编、链接和调试等各个步骤,提高对汇编课程内容的理解和汇编语言的掌握,通过上机练习加深对课程内容的理解和掌握。通过汇编语言编制的程序上机调试、运行检验程序设计是否正确。熟悉和掌握编辑、汇编、连接和调试四个实用程序的使用方法,掌握调试程序中的几个常用命令的使用方法。熟悉其基本的指令操作,debug调试操作命令以及分支结构、顺序结构和循环结构的程序设计。 二、实验环境 操作系统:Microsoft Windows8 集成环境:Masm for Windows 上机地点:信息楼B405教室 三、实验的预习内容 预习的主要内容: 1. 使用DEBUG命令的方法; 2. 熟悉掌握从理论上定义数据的类型(即DB,DW,DD,); 3. 分支结构和顺序结构的步骤以及相关的指令; 4. 常用的标志位状态及相应的作用; 实验思路: 在对题目进行分析后,分析出解题方法,并做出与实验思路相对应的程序框图。依照程序框图的内容输入相对应的代码,最终在调试代码后,发现并解决一系列的汇编语言错误。进一步优化算法。实验之前必须了解十进制、十六进制和ASCII码之间的转换。预习查表法相关命令,掌握顺序程序的结构,从键盘输入数据的命令及显示到屏幕上的命令。 实验一: 题目1:将程序编辑、汇编、连接并通过集成环境中的debug调试,观察运行结果;用E命令修改指定地址的数据,再用G命令执行程序查看变化,用A 命令将加法指令修改成减法指令,再将其编译运行,查看寄存器值变化的异同。 题目2:分别用DB、DW和DD数据段9H,0FAH,41H,27H,编译链接之后生成exe文件,再用debug的r命令找到数据段地址,用d命令指定数据段地址,观察汇编后在机器内部对应的存储情况。 实验二: 先设置数据段地址和堆栈段地址;设置堆栈段指针;读取一个字符然后存储在AL中;用BX来存储AL中字符对应的数值;将BX中的值作为偏移地址;并在数据段中查找对应字符串;最终输出结果结束程序。 实验三: 先初始化数据段地址与堆栈段地址;设置堆栈段指针;然后将数据段中的data1放入AL中;读取数据段中的data2并判断data2是否大于0;然后读取数

河北工业大学汇编语言知识程序设计实验

汇编语言程序设计实验 网络*** *** 实验一 顺序与分支程序设计 一 、实验目的 1) 掌握顺序程序设计方法。 2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在pc 机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1.实验六 从键盘上接收一位十进制数x ,计算y 值,并以十六进制形式显示出来,y 按下列公式计算。 ???????===-=+=) 6(2/) 5()4(2) 3(22 2 2X X X X X X X X X X Y 2..实验七 实验内容:从键盘上接收两个一位十六进制数x 和y ,然后再输入一个a-d 之间的一个字符,按下列要求计算。 a) 当输入字符为a ,则计算x+y ,并以十六进 制形式显示出来 b) 当输入字符为b ,则计算|x-y|,并以十六进制形式显示出来 c) 当输入字符为c ,则计算x*y ,并以十六进制形式显示出来 d) 当输入字符为d ,则计算x/y ,并以十六进制形式显示出来 三、实验代码 实验六 DATE SEGMENT X DB ?

DATE ENDS ;数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATE START:MOV AX,DATE ;代码段 MOV DS,AX ;初始化ds寄存器 MOV AH,1 INT 21H ;读文件到缓冲区 CMP AL,33H ;比较指令 JB L0 ;A

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

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 1. 使用工具 (1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文 件; (2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件- 目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表; (3)Link连接程序,对使用的目标文件和库文件进行连接,生 成.exe文件,同时调试用.map-地址映像文件; 如果源程序无语法错误,上述三步将生成可运行的.exe文件, 如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存 在错误,需要进行调试。 (4)Debug调试程序,对.exe文件进行调试,修改,直到程序正 确。 图3 目标程序生成步骤图2. 编程过程 (1)用文本编辑软件,编写扩展名为.asm的源文程序文件。 (2)用汇编程序对编好的源文件进行汇编。 命令行:masm [*.asm] ↙ 如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。 使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。 *.obj-目标文件,用于连接生成可执行文件; *.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于

调试; *.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。 (3)目标文件的连接 命令行:link [*.obj] [*.obj] [*.lib] ↙ 连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。 *.map-地址映像文件,给出内存地址分配的有关信息。 下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。 (4)执行程序 执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。 二、汇编程序的调试

汇编语言程序设计课程教学大纲

课程教学大纲 (理论课) 课程名称:汇编语言程序设计 适用专业:计算机科学与技术 课程类别:学科基础课 制订时间: 2006年8月 数学与计算机科学学院制

汇编语言程序设计课程教学大纲 (2002年制订,2006年修订) 一、课程代码:0502121009 二、课程类别:学科基础课程 三、预修课程:计算机导论、高级语言程序设计等 四、学分: 4学分 五、学时: 86学时(其中实验部分32学时) 六、课程概述: 汇编语言是计算机能提供给用户最快也最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而在对于程序的空间和时间要求很高的场合,汇编语言是必不可少的,至于对于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。 汇编语言作为计算机专业的一门必修课程是了解计算机体系结构和操作系统的最佳切入点。通过汇编语言课程的学习,对计算机理论中包括CPU体系结构、指令调度方式、存储器管理、基本输入输出接口的理解都会有一个比较本质而且直观的认识。在对汇编语言实际运用的基础上同时还能帮助对高级语言程序设计的深入体会,包括变量的组织,地址的访问,循环与分支在机器码中的处理,调用函数时参数的传递等,所以汇编语言在本专业中是一门核心的课程,通过对本课程的学习是加深对后续课程认识的基础。 七、教学目的: 通过对本课程的学习,掌握8086微处理器的寄存器组和基本寻址方式,学生要达到对程序在计算机中的基本调度有一定认识,对二进制基础理论有深入的理解,同时熟练掌握8086汇编语言的编写方式,掌握基本的系统调用,具备良好的源程序调试能力以及最基本的、实模式下的反汇编能力。

《汇编语言程序设计》教案

授课题目第七章更灵活地定位内存地址的方法课时安排4学时一、教学目的 通过本次课程学习,让学生 1.掌握and与or指令 2.掌握大小写之母的转换 3.掌握SI和DI寄存器 4.掌握内存地址的多种定位方法 二、教学重点 1.and与or指令 2.定位内存地址的多种方法 三、教学难点 1.灵活运用and与or指令 2.灵活运用地址定位方法 四、教学方法(请打√):讲授√□ 讨论□ 课堂练习√□ 实验□ 其他□ 五、教学手段(请打√):多媒体√□ 模型□ 实物□ 挂图□ 音像□ 其他□ 六、教学内容及过程 1. 课程引入 (约 5 分钟) 我们已经学过了用bx来保存内存的偏移地址,也可以用cs:[idata]的方法来访问内存单元,还有没其他的内存地址定位方法? 我们已知一组由英文字母组成的字符串,如何将这些字符进行大小写的转换? 2. and和or指令 (约15分钟) (1)and指令 and指令是逻辑与指令,按位进行与运算。 (2)or指令 or指令是逻辑或指令,按位进行或运算。 3. 关于ASCII码 (约10分钟) 编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。ASCII码就是一种编码方案。 4. 以字符形式给出的数据 (约10分钟) 汇编程序中,用 ‘……’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。

Db表示定义字节型数据,即define byte。 例题分析。 5 大小写转换的问题 (约25分钟) 大写字母与小写字母的ASCII码相差20H,因此可以利用这个规律进行大小写转换。但是前提条件是需要知道该字母是大写字母还是小写字母。 例题分析。 目前我们尚未学习判断字母是大小写的问题,那么如何应用学过的知识进行大小写字母的转换。 就ASCII码的二进制形式来看,除第5位(位数从0开始计算)外,大写字母和小写字母的其他各位都一样。大写字母ASCII码的第5位(位数从0开始计算)为0,小写字母的第5位为1。因此就可以利用大小写字母的这个特点以及or指令和and指令进行大小写转换。 6 [bx+idata] (约10分钟) [bx]指明一个内存单元。 [bx+idata]也指明一个内存单元,它的偏移地址为(bx)+idata。 mov ax,[bx+200]也可以写成mov ax,[200+bx]、 mov ax,200[bx]、mov ax,[bx].200问题7.1。 7 用[bx+idata]处理数组 (约15分钟) (1)利用[bx+idata]的方式,就可以用更简化的方法来编写代码。 (2)例题分析。 (3)[bx+idata]与高级语言的比较。 [bx+idata]的方式为高级语言实现数组提供了便利机制 8 SI和DI (约15分钟) (1) SI和DI寄存器 SI和DI与bx功能相近的寄存器,SI和DI不能够分成两个8 位寄存器来使用。 (2)例题分析。 (3)问题7.2分析 用ds:si指向源字符串的地址,ds:di 指向复制的目的地址。 问题7.2的简化。利用[bx(si或di)+idata]可以进一步简化代码。 9 [bx+si]和[bx+di] (约15分钟) (1)[bx+si]和[bx+di]的含义 [bx+si]和[bx+di]的含义相似,[bx+si](或[bx+di])表示一个内存单元,它的偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)。 (2)问题分析 10 [bx+si+idata]和[bx+di+idata] (约20分钟)

汇编语言程序设计基本方法

第七章汇编语言程序设计基本方法1.教学目的:掌握微型汇编语言程序分析和设计方法 2.教学要求: ①熟悉汇编语言程序设计的基本步骤。 ②掌握程序流程图的使用,会利用其分析问题。 ③掌握汇编语言的顺序、分支、循环程序的设计。 ④了解实模式下80386及其后继机型的汇编语言的程序设计3.教学重点: ①利用流程图分析问题。 ②顺序、分支、循环程序的设计。 4.掌握难点: ①分支程序设计 ②循环程序设计 5.教学进程安排:P137~P168 6.教学方法: 课堂讲授 7.教学内容摘要: 7.1 汇编语言程序设计概述 7.1.1 汇编语言程序设计的基本步骤 1.分析问题,抽象出描述问题的数学模型 2.确定算法 3.绘制流程图 4.分配存储空间和工作单元 5.编写程序 6.静态检查 7.上机调试运行 7.1.2 程序流程图 1. 用自然语言表示算法 2. 流程图的组成 ⑴执行框(矩形框) ⑵判别框(菱形框) ⑶开始框和终止框 ⑷指向线 ⑸连接点 3. 三种基本结构和改进的流程图 ⑴传统流程图的弊端 ⑵三种基本结构 ①顺序结构 ②选择结构 ③循环结构

图7.4 顺序结构图图7.5 选择结构图 4. 结构化程序设计的特点 ⑴只有一个入口 ⑵只有一个出口 ⑶各功能框均可执行 ⑷结构中无死循环 7.2 顺序程序设计 顺序结构程序是最简单的程序,在顺序结构程序中,指令按照先后顺序一条条执行。 【例7-3】将—个字节压缩BCD码转换为两个ASCII码。 7.3 分支程序设计 7.3.1 分支程序的结构形式 分支程序结构可以有两种形式,如图7.6 (1) IF_THEN_ELSE结构 (2) CASE结构 7.3.2 分支程序设计方法 程序的分支一般用条件转移指令来产生,利用转移指令不影响条件码的特性,连续地使用条件转移指令使程序产生了多个不同的分支,而对于数组中的每一个数,它只能是多个分支中的某一个。 【例7-5】在附加段中,有一个按从小到大顺序排列的无符号数数组,其首地址存放在DI 寄存器中,数组中的第一个单元存放着数组长度,在AX中有一个无符号数,要求在数组中查找(AX),如找到,则使CF=0,并在SI中给出该元素在数组中的偏移地址;如未找到,则使CF=1。 【例7-6】折半查找算法程序 7.3.3 跳跃表法

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