Emu8086使用指南中文

上传人:re****.1 文档编号:487892129 上传时间:2024-01-25 格式:DOC 页数:42 大小:561.50KB
返回 下载 相关 举报
Emu8086使用指南中文_第1页
第1页 / 共42页
Emu8086使用指南中文_第2页
第2页 / 共42页
Emu8086使用指南中文_第3页
第3页 / 共42页
Emu8086使用指南中文_第4页
第4页 / 共42页
Emu8086使用指南中文_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《Emu8086使用指南中文》由会员分享,可在线阅读,更多相关《Emu8086使用指南中文(42页珍藏版)》请在金锄头文库上搜索。

1、如何运行?在开始菜单选在它的图标,或者直接运行Emu8086EXE在FILE菜单中选择SAMPLE点击Compile and Emulate按纽(或者按快捷键F)点击Single Step按纽(或者按快捷键F),可以查看代码如何运行十进制系统目前使用最多的是十进制十进制系统有个数字, 利用这些数字能表示任何数值,例如这些数字是由每一位数字乘以“基数”的幂累加而成的(上一个例子中基数是10 因为十进制中有十个数字)。位置对于每一个数字是很重要的。例如,你将上一个例子中的“7”放到结尾:547数值就成为:特别提醒:任何数字的0次幂都是1,0的0次幂也是1二进制计算机没有人类聪明(至少现在是这样),

2、制造一个只有开关或者称为 0,1 两种状态的电子机器很容易。计算机使用二进制系统,只有两个数字 0, 1基地为2每一位二进制数称作一位(BIT),4 BIT 组成一个半字节(NIBBLE),8BIT组成一个字节(BYTE),两个字节组成一个字(WORD),两个字组成一个双字(DOUBLE WORD)(很少使用):习惯上在一串二进制后面加上“b”,这样,我们可以知道101b是二进制表示十进制的5。二进制10100101b表示十进制的165,计算方法如下:十六进制系统十六进制系统使用16个数字0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F基底是 16.

3、 十六进制非常紧凑,便于阅读。将二进制转换为十六进制很容易,半字节(4bits) 对应一位十六进制如下表Decimal(base 10)Binary(base 2)Hexadecimal(base 16)000000100011200102300113401004501015601106701117810008910019101010A111011B121100C131101D141110E151111F习惯上我们在一个十六进制数的后面加上 H,以便和其他进制区别, 这样我们就知道 5Fh是一个十六进制数表示十进制的 95。习惯上,我们也在以字母开头(从到)的十六进制数前面 加上0例如: 0E

4、120h. 十六进制 1234h 等于4660:十进制到另外进制的换算 在换算中,将十进制数不断除以目标进制的基底,每一次都要记录下商和余数,直到商。 余数用来表示结果。下面是一个十进制(基底是)到十六进制(基底是)的换算:结果为27H上例中所有的余数都小于,不必使用字母。再举一个更复杂的例子:十进制 43868 换算为十六进制:结果是 0AB5Ch, 使用 上面提到的表 将大于的数字替换成字母。 运用同样的原理,我们可以换算为二进制(用作除数),或者是先换算成十六进制,再用上面的表换算成二进制:于是,得到二进制: 11100b 有符号数 对于十六进制数0FFh无法确定它是正数还是负数,因为它

5、可以表示十进制的255 或者 - 1。位可以表示个状态,于是,我们可以假定前个表示正数(从0到127),接下来的个数(从128到256)表示负数 。如果想表示- 5,我们从中减去,即 256 - 5 = 251。用这种复杂的方法表示一个负数有着数学依据的,数学上- 5 加上 5等于。当我们将两个位的数字5 和251相加时,结果超过,溢出处理为!128到256高位始终是,这个可以作为数字符号的标记 对于字(位),位有65536个状态,头个状态(从0到32767)用来表示正数,下面的个状态(从32767到65535) 表示负数Emu8086带有数制转换工具,也可以计算各种数值表达式。选择菜单 Ma

6、th 项: Number Convertor (数制转换)可以实现任意数制之间的转换。在文本框中填写源 数值,将自动转换到任意的数制。 可以作 8 位 或者 16 位转换。Expression Evaluator(表达式计算)可以用来计算不同数制的计算以及从一个进制到另一个进制的转换。输入表达式,按下回车,结果就会以你选定的进制表示。最长可以进行位的计算。当在Signed打钩选中时(除了八进制和双字),最前面的一位将被认作是符号位。这样以来,0FFFFFFFFh将被认为是十进制的。例如,你计算0FFFFh * 10h + 0FFFFh ( 8086 CPU所能访问的最大内存地址)。如果你选中S

7、igned 和 Word选项,结果是-17(因为表达式被认为是(-1) * 16 + (-1) )。如果想按照无符号数计算,请不要选择Signed表达式为65535 * 16 + 65535计算结果将是 同样你可以使用Number Convertor将非十进制换算为有符号的十进制,然后根据十进制计算。支持如下运算: not (inverts all bits).* multiply./ divide.% modulus.+ sum.- subtract (and unary -). shift right.& bitwise AND. bitwise XOR.| bitwise OR.二进制必

8、须有“”作结尾,例如00011011b 十六进制必须有h作结尾,另外,当地一位是字母时,最前面必须加上,例如:0ABCDh八进制必须有o作结尾,例如:77o什么是汇编语言? 汇编语言是底层编程语言。为了学习这门语言,你需要对于计算机结构有所了解。计算机系统模型如下:系统总线 system bus(图中黄色部分)是将计算机各个部分连接到一起的部件。CPU是计算机的心脏,大部分的运算都是在CPU中完成的。RAM是读取并且存放将要执行的程序的地方。CPU内部 通用寄存器8086CPU有8个通用寄存器,每一个寄存器都有自己的名称: AX 累加寄存器 accumulator register(分为 AH

9、 / AL). BX 基址寄存器 base address register (分为 BH / BL). CX 计数寄存器 count register(分为 CH / CL ). DX 数据寄存器 data register (分为 DH / DL). SI 源变址寄存器 source index register. DI 目的变址寄存器 destination index register. BP 基址指针寄存器 base pointer. SP 堆栈寄存器 stack pointer. 编程中,由程序员决定通用寄存器的具体用途。寄存器的主要目 的是保存数值(变量)。上面提到的寄存器是16

10、位的,意思是:11001b (二进制),或者12345(十进制形式)。4个通用寄存器(AX, BX, CX, DX) 在使用时分为两个8位寄存器,例如 假设AX= b,AH=b AL=b。当你修改其中任意8位值,整个16位寄存器的值同样改变。同样对于其他的3个寄存器,“H”表示高8位,“L”表示低8位。寄存器在CPU内部,访问中它们速度远远超过内存。因为,访问内存需要经过系统总线,所以时间要长一些。而访问寄存器中的数据几乎不需要时间。于是,编程中,应当尽量在寄存器中保存数据。虽然寄存器很小,并且这些寄存器都有具体用途,但他们依然是存放计算中临时数据的好地方。段寄存器 CS 代码段寄存器,用来存

11、放当前正在运行的指令 DS 数据段寄存器,用来存放当前运行程序所用的数据 ES 附加段寄存器,由程序员决定用途 SS 堆栈段寄存器,指出堆栈所在区域 尽管容许在段寄存器中存放任何数据,但是这决不是 一个好主意。段寄存器有着非常特别的目的指出可以访问内存块的地址。段寄存器与通用寄存器协同工作就可以访问任意的内存区域。例如,如果我们打算访问物理地址是12345h(十六进制)的内存单元,我们应设置DS = 1230h SI = 0045h 这样以来,我们便能访问超过一个寄存器(16位)所能表示的内存地址的范围。CPU计算物理地址的方法是将段寄存器乘以10H在加上一个特定的通用寄存器。(1230h *

12、 10h + 45h = 12345h):这种,由两个寄存器生成的地址被称为有效地址 (effective address)默认下,BX, SI 及 DI 与 DS协同工作,BP SP 与 SS 寄存器协同工作。其余的通用寄存器不能形成有效地址!同样,尽管BX可以形成有效地址,但是BH BL不能!控制寄存IP 指令指针寄存器 instruction pointer 、Flags Register 状态标志寄存器 IP 始终同CS 协同工作,指出当前执行的指令。 Flags Register 完成一次数学运算后,由CPU自动修改,通过它可以得到当前结果类型,也可以作为跳转语句条件。通常你无法直接

13、访问它们。寻址方式 我们可以通过下面的四个寄存器来寻址 BX, SI, DI, BP.通过计算符号中的值,我们可以访问到不同内存单元的值。具体组合请看下表:BX + SIBX + DIBP + SIBP + DISIDId16 (variable offset only)BXBX + SI + d8BX + DI + d8BP + SI + d8BP + DI + d8SI + d8DI + d8BP + d8BX + d8BX + SI + d16BX + DI + d16BP + SI + d16BP + DI + d16SI + d16DI + d16BP + d16BX + d16d8

14、 - 表示位偏移量 d16 - 表示位偏移量偏移量可以是一个立即数或者是一个变量的偏移,或者二者兼备。这取决于编译器如何计算单独的立即数。偏移量可以在符号里面或者外面,这不影响编译器生成相同的机器码。偏移量是一个有符号数,可以是正数或者负数。一般说来,8位或者16位,对于编译后的结果是有影响的。例如,假定 DS = 100, BX = 30, SI = 70。如下寻址方式 BX + SI + 25 计算物理地址为100 * 16 + 30 + 70 + 25 = 1725默认下,DS 寄存器应用在除了BP寄存器之外的所有物理地址计算中,寄存器是和SS寄存器一起工作的。用过下面的表,你可以和轻松记住谁和谁是关联在一起使用的。上表中,你可以从每一列中选择一个或者忽略任意一个列。比如,可以看到,BX 和 BP始终不会选到一起。SI 和 DI不会选到一起。这是一个计算地址模式BX+5 段寄存器(CS, DS, SS, ES) 中数值被称作 段偏移 。目的寄存器(BX, SI, DI

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号