首页 汇编语言入门(整理)

汇编语言入门(整理)

举报
开通vip

汇编语言入门(整理)汇编语言入门(整理) 第1章 基础知识 1.1 机器语言 机器码到计算机的运算原理:机器码为一系列的01的二进制组合,计算机将这些二进制组合 转换为高低电平,驱动计算机的电子器件进行运算。 不同的计算机结构不同,驱动方式也不同,所以需要不同的机器语言。 早期的程序员使用打卡机输入计算机,进行运算。 机器语言编码和查错非常不方便。 1.2 汇编语言的产生 机器语言的麻烦-->汇编语言的产生。区别就在于指令的表示方法上。 编译器:将汇编语言转换为机器语言的工具。 1.3 汇编语言的组成 汇编语言的组成...

汇编语言入门(整理)
汇编语言入门(整理) 第1章 基础知识 1.1 机器语言 机器码到计算机的运算原理:机器码为一系列的01的二进制组合,计算机将这些二进制组合 转换为高低电平,驱动计算机的电子器件进行运算。 不同的计算机结构不同,驱动方式也不同,所以需要不同的机器语言。 早期的程序员使用打卡机输入计算机,进行运算。 机器语言编码和查错非常不方便。 1.2 汇编语言的产生 机器语言的麻烦-->汇编语言的产生。区别就在于指令的表示方法上。 编译器:将汇编语言转换为机器语言的工具。 1.3 汇编语言的组成 汇编语言的组成:汇编指令,伪指令,符合(+/-/*//) 1.4 存储器 CPU处理指令和数据,而存储器则负责将指令和数据传递给CPU处理。 1.5 指令和数据 只是应用上的区别。存储上都是二进制码。 1.6 存储单元 存储器由存储单元组成,每个存储单元从0开始编号。每个存储单元能存储的信息容量为1 个字节。内存单元的容量就是固定的一个字节。 1.7 CPU对寄存器的读写 信息交互分类: ? 地址信息 ? 控制信息(读/写) ? 数据信息 信息的传递通过总线进行,总线及一组导线的集合。按照逻辑上分类,分为地址总线控制总 线和逻辑总线。 要命令CPU完成上述操作,则向CPU输入驱动的电平信号即可。 1.8 地址总线 地址总线宽度: 地址线的条数即地址总线的宽度,决定了CPU可以访问多少个寄存器存储单 元。 1.9 数据总线 数据总线宽度决定了传送数据的快慢。 1.10 控制总线 控制总线是一种控制信号的集合。CPU对外部器件的控制通过控制总线来进行,控制总 线的宽度决定了CPU对外部器件的控制能力。 1.11 内存地址空间(概述) 可寻址的内存单元即CPU的内存地址空间。 1.12 主板 PC机中,有一个主板,主板上有核心器件和主要器件,器件直接通过总线相连。 这些器件主要包括:CPU,存储器,外围芯片组,已经扩展插槽。 插槽一般有RAM内存条和各类接口卡。 1.13 接口卡 电脑上的所有设备必须受到CPU的控制才能工作,而CPU不能直接控制显卡,显示器等设备,这些设备必须通过接口卡来控制。而接口卡是通过总线和CPU相连的。接口卡根据CPU的指令对外设进行控制。 1.14 各类存储器芯片 PC中包含多种存储器。 1.15 内存地址空间 CPU对PC中的多种存储器进行管理,而每个存储器是独立的。但是CPU把所有的内存看做逻辑统一的器件来进行管理。所以在编程时必须了解CPU的地址空间和硬件的对应关系。 第2章 寄存器 CPU主要包括运算器,控制器,寄存器等。这些部件通过CPU的内部总线来连接。其中对于程序员来讲最重要的是对CPU的寄存器的控制。不同CPU寄存器的个数不同寄存器名称 功能 备注 AX 通用寄存器 BX 。。。 CX 。。。 DX 。。。 SI DI SP 栈顶偏移地址 BP IP 指令偏移地址 CS 指令段地址 SS 栈顶段地址 DS 数据段地址 ES PSW 2.1 通用寄存器 在8086中,所有寄存器都是16位的。可以存放两个字节。AX,BX,CX,DX用来存放一般的数据,被称为通用寄存器。为了兼容以前的系统,每个寄存器都可以分为可以独立使用的8位寄存器来使用。 2.2 字在计算机中的存储 字的高8位在16位寄存器的高8位寄存器中存储,低8位在16位寄存器的低8位寄存器中存储。 2.3 几条汇编指令 通过汇编指令控制CPU进行工作。汇编指令可以用高级语言来描述。 2.4 物理地址 所有内存单元构成的存储空间是一个一维的线性空间,每个内存单元在这个线性空间中都有唯一的地址。这个地址即物理地址。CPU通过地址总线传送的是物理地址。 2.5 16位的CPU 一次性可以处理数据的最大宽度为16位。 2.6 8086CPU给出物理地址的方法 8086CPU地址线宽度为20,而处理能力为16位,所以不能直接给出物理地址。通过CPU给出两个地址值,一个段地址,一个偏移地址。给到加法器,再由加法器计算给到输入输出控制电路,输出到地址总线上。加法器的计算方法为:段地址*16+偏移地址。 2.7 “ 段地址×16+偏移地址=物理地址”的本质含义 16即4位数据宽度,而20-16刚好为4。 2.8 段的概念 段并不是被内存定义好的,而是CPU定义的。段地址必须是16的整数倍。一个段的寻址空间最多为64K。即16根地址线的寻址空间。 2.9 段寄存器 提供给加法器的段地址存储在段寄存器中。段寄存器有4个,CS,DS,SS,ES. 2.10 CS和IP CS指示存放指令地址的段地址,IP指示存放指令地址的偏移地址。 读取,执行指令过程的工作原理-? (1) 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓存区。 (2) IP=IP+读取的指令的长度,从而指向下一条指令。 (3) 执行指令,转向步骤1,重复上述步骤。 8086CPU加电或启动复位后,CS:IP中的内容为0Xffff:0000.即内存0XFFFF0,该单元中的指令是8086CPU开机后执行的第一条指令。 2.11 修改CS,IP的指令 CPU中修改寄存器大部分可以通过mov指令来实现,但是修改CS和IP的值不可以。需要用JMP指令来实现。 2.12 代码段 将代码放在一段连续的内存单元中,并让CS:IP执行该段内存的首地址,则称之为代码段。 .实验1 查看CPU和内存,用机器指令和汇编指令编程 1. 预备知识:debug的使用 类别 指令 描述 示例 备注 CPU R 查看 改变 r r ax 内存 D 查看 查看具体地址 d d 1000:0 d 1000:0 9 解释: 内存地址 内存中内容 内存中内容的ASC E 改写 e 1000:0 1 2 起始地址 数据/字符 字符要加”” 翻译 U 机器->汇编 u 1000:0 将内存地址中机器码对应的汇编显示 执行指令 T 执行一条机器指令 t 执行CS:IP执行的内容 写指令 A 写入一条汇编指令 a 1000:0 mov ax,1 向指定的内存中输入汇编指令 跳转 g 跳转到指定地址 g 000d 修改IP的值 跳出循环 p 自动执行循环,到cx为0 p 跳出循环 ? cmd中的debug命令,默认就是十六进制的,不需要加H或0x,加上后会报错。 ? .实验2 哈哈 第3章 寄存器 (内存访问) 3.1 内存中字的存储 内存中字由两个连续的存储单元来存放,字的高字节放在高地址的内存单元,低字节放在低地址的内存单元。这两个内存单元合起来称为字单元。地址为低字节地址。 3.2 DS和[address] CPU要访问的内存单元的数据地址,由DS和[„]来决定。DS中存放段地址,[..]中的..为存放的偏移地址。[..]表示一个内存单元。 8086CPU不支持直接将数据的内容通过mov指令传送到DS寄存器,必须通过其他寄存器中转。 例如:mov bx,1000H; mov ds,bx 3.3 字的传送 直接用ax/bx/cx/dx16位寄存器来进行数据的传送。原理同字节传送。 3.4 mov、add、sub指令 add为加指令 sub为减指令 3.5 数据段 在内存中,可以规定一块连续的内存为一个段。我们约定自己定义一段内存来放数据,则这段内存成为数据段。 3.6 栈 是一种具有特殊的访问方式的寄存器区域。遵循后进先出的规则。 3.7 CPU提供的栈机制 8086CPU入栈时,栈顶从高地址向低地址方向增长。 任意时刻,SS:SP指向栈顶元素。 3.8 栈顶超界的问题 8086CPU并没有保障栈越界出界的问题,必须是程序员小心防范。 3.9 push,pop指令 push/pop寄存器/内存单元 3.10 栈段 自定义栈段,让SS:SP指向该栈段即可。 第4章 第一个程序 4.1 一个源程序从写出到执行的过程 编写代码-?编译链接?执行可执行文件 4.2 源程序 汇编语言包含伪指令和汇编指令两种。汇编指令最终被翻译成机器码,伪指令只是帮住编译。 4.3 编辑源程序 程序的编辑。 4.4 编译 输入源文件名,目标名,其他直接忽略,按回车。 4.5 连接 略 4.6 以简化的方式进行编译连接 编译:直接masm c:1; 连接:直接link c:1; 4.7 执行 直接输入exe的文件名。 4.8 谁将可执行文件中的程序装载进入内存并使它运行 DOS中为command。DOS启动时,首先运行初始化程序,然后启动command.com程序。该程序接收命令行的输入,处理输入命令。 程序执行过程的跟踪 4.9 用DEBUG程序运行跟踪程序。 T:单步执行 P:到了int21时需要P 第5章 [BX]和loop指令 5.1 [BX] bx中存放的数据为偏移地址,段地址存放在ds中。[BX]只对应的物理地址的int bx; bx的值加1. 5.2 Loop指令 格式: loop标号。 算法:先判断CX的值,如果为0,则跳过loop指令,往下执行。否则则跳转到标号所指向的地址。执行指令。 5.3 在debug中跟踪用loop指令实现的循环程序 汇编源程序中,数据不能以字母开头。例如ffffh,要写成0ffffh。 命令g地址 或者p 5.4 debug和汇编编译器masm对指令的不同处理 对于指令mov ax,[2]。编译器认为[2]表示立即数2.但在debug中,表示偏移地址2中的内容。 解决 办法 鲁班奖评选办法下载鲁班奖评选办法下载鲁班奖评选办法下载企业年金办法下载企业年金办法下载 : ? 用bx做中转寄存器。(比较麻烦) ? 显示说明[2]为地址。增加表示段地址的寄存器。例如mov ax,ds:[2]. 5.5 loop和 [bx]的联合应用 做8位数据的累加时,需要用16位寄存器来中转。否则会造成数据不匹配或数据越界。 5.6 段前缀 显示的给出段地址所在的寄存器。该方式叫段前缀。 5.7 一段安全的空间 DOS是实模式操作系统。但是没有完全的控制权。我们要往安全的空间里面写内容。这段空间为0:200-0:2ff. 5.8 段前缀的使用 DS只是默认的段前缀寄存器,ES等其他寄存器也可以用来做段地址寄存器。 第6章 包含多个段的程序 6.1 在代码段中使用数据 目的:将数据存储在一组地址连续的内存单元 方法1:用指令一个一个传送,并制定内存地址。问题是,我们不知道哪些地址可用。所以这个方法不行。 方法2:向操作系统 申请 关于撤销行政处分的申请关于工程延期监理费的申请报告关于减免管理费的申请关于减租申请书的范文关于解除警告处分的申请 。我们只需要定义,操作系统在编译,连接时将代码段作为程序的一部分写到可执行文件中。当可执行文件的程序被加载入内存时,这些数据也被加载到内存。即分配相应的存储空间。 dw:定义字型数据。
本文档为【汇编语言入门(整理)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_713593
暂无简介~
格式:doc
大小:23KB
软件:Word
页数:10
分类:企业经营
上传时间:2017-10-19
浏览量:16