8086汇编
文章平均质量分 56
Balancer
与其临渊羡鱼,不如退而结网。
展开
-
第一章 --- 第三节
1.8 ---- 地址总线地址总线上能传送多少不同的信息,CPU就可以对多少个存储单元进行寻址。小知识:我们常说,32位CPU或者64位CPU,多少位指的就是CPU的寻址能力,也就是地址总线的线数,64位CPU就是64条地址总线。64位的CPU + 64位的操作系统 + 64位的软件 = 64位的速度,缺一不可。64位就是64bit,也就是8Byte下图表示了地址总线发送地址:原创 2011-11-27 09:25:24 · 527 阅读 · 0 评论 -
2.3检测题
MOV AX, BX执行完成之后,CPU修改一次IP寄存器的内容SUB AX, AX执行完成之后,CPU修改一次IP寄存器的内容JMP AX指令被读入到指令缓冲器当中的时候,CPU修改一次IP寄存器的内容JMP AX指令完成之后,CPU修改一次IP寄存器的内容最后IP中的值是0000H原创 2011-12-11 18:57:39 · 399 阅读 · 0 评论 -
第三章 --- 第一节
内存中字的存储:在0地址处开始存放4E20H这个字(4EH是高位数据,20H是低位数据)Intel的CPU是小尾(小端)顺序,也就是说,低位数据存放在低地址的内存单元中,高位数据存放在高地址的内存单元中。针对上图,提出如下问题:问题一:0地址单元中存放的字节型数据是多少? 20H问题二:0地址单元中存放的字型数据是多少? 4E20H问题三:2地址单元中存放的字节原创 2011-12-12 22:15:54 · 682 阅读 · 0 评论 -
第三章 ---- 第三节
已知MOV指令的几种形式:MOV 寄存器, 立即数 MOV AX, 4000HMOV 寄存器, 寄存器 MOV AX, BXMOV 寄存器, 内存 MOV AX, [0]MOV 内存, 寄存器 MOV [0], AXMOV 段寄存器, 寄存器 MOV DS, AX原创 2011-12-25 18:22:06 · 913 阅读 · 0 评论 -
检测题3.1
MOV AX, 1MOV DS, AXMOV AX, [0000] AX = 2662HMOV BX, [0001] BX = E626HMOV AX, BX AX = E626HMOV AX, [0000] AX = 2662HMOV BX, [0002] BX = D6E6HADD AX, BX AX原创 2011-12-27 23:23:53 · 601 阅读 · 0 评论 -
第三章 --- 第四节
栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去(FILO或者LIFO)。栈有两个基本的操作:入栈和出栈。入栈:将一个新的元素放到栈顶。出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。栈的操作规则:LIFO(LAST IN FIRST OUT,后进先出) 现今的CPU中都有栈的设计。8086C原创 2011-12-28 21:58:49 · 546 阅读 · 0 评论 -
第四章 --- 第一节
一个汇编语言程序从写出到最终执行的简要过程:编写 --> 编译 --> 连接 --> 执行【编写】使用文本编辑器(如记事本、NodePad++、UltraEdit等),用汇编语言编写汇编源程序。【编译】使用汇编语言编译程序(MASM.EXE)对源程序文件中的源程序进行编译,产生目标文件。【连接】使用连接程序(LINK.EXE)对目标文件进行连接,生成可在操作系统中直原创 2012-01-10 21:44:46 · 502 阅读 · 0 评论 -
第三章 --- 第五节
POP AX 指令的执行过程(1)将SS:SP指向的内存单元处的数据送入AX中。(2)SP = SP + 2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。注意:1、出栈后,SS:SP指向新的栈顶,1000EH,POP操作前的栈顶元素,1000CH处的2266H依然存在,但是,它已经不在栈中。2、当再次执行PUSH入栈指令后,SS:SP移至1000CH,原创 2011-12-30 23:01:16 · 572 阅读 · 0 评论 -
第三章 --- 第七节
我们可以将长度为N(N将一段内存当做栈段,仅仅是我们编程时的一种安排,CPU并不会由于这种安排,就在执行PUSH、POP等栈操作指令时自动地将我们定义的栈段当做栈空间来访问。需要我们根据需要来设定SS:SP的值来告诉CPU我们对于栈的安排。问题:如果我们将10000H~1FFFFFH这段空间当做栈段,初始状态是空的,此时,SS = 1000H, SP = ?答案:SP =原创 2012-01-05 22:53:13 · 466 阅读 · 0 评论 -
第三章 --- 第六节
编程1:将10000H~1000FH这段空间当做栈,初始状态时空的,将AX、BX、DS中的数据入栈。MOV AX, 1000HMOV SS, AXMOV SP, 0010HPUSH AXPUSH BXPUSH DS编程2:(1)将10000H~1000FH这段空间当做栈,初始状态是空的;(2)设置AX = 001AH,设置BX = 001BH;原创 2012-01-04 20:29:03 · 1459 阅读 · 0 评论 -
第二章 --- 第五节
段寄存器就是提供段地址的。8086CPU有4个段寄存器:CS、DS、ES、SSCS:代码段DS:数据段SS:堆栈段ES:附加段要从内存中读取指令或者数据,就要制定存储指令或者数据的内存单元的地址,8086的地址总线的宽度为20位,而8086内部寄存器的宽度都是16位的,所以采用 段地址 * 16 + 偏移地址 的方法来生成20位的地址。所以当8086CPU要访问内存原创 2011-12-11 17:57:50 · 554 阅读 · 0 评论 -
2.1检测题
F4A3H31A3H3123H6246H826CH04D8H0482H6C82HD882HD888HD810H6246H (2)只能使用目前学过的汇编指令,最多使用四条指令,编程计算2的4次方。MOV AX, 2ADD AX, AXADD AX, AXADD AX, AX原创 2011-12-06 22:27:07 · 420 阅读 · 0 评论 -
第一章 -- 第二节
1.3 ---- 汇编语言的组成汇编语言由以下三类组成:1、汇编指令(机器码的助记符,能够直接翻译成机器码)2、伪指令(由编译器执行,没有对应的机器码,CPU不能识别)3、其它符号(例如:+ - * /,由编译器执行,CPU不能识别)小知识:CPU不认识加减乘除,它内部有一个逻辑运算单元,认识的运算是逻辑运算(与 或 非)对于伪指令和其它符号,编译器会将其翻译成cpu能原创 2011-11-26 22:37:04 · 478 阅读 · 0 评论 -
第一章 --- 第四节(1~3小结)
1、汇编指令是机器指令的助记符,同机器指令一一对应。2、每一种CPU都有自己的汇编指令集。3、CPU可以直接使用的信息在内存储器中存放。4、在存储器中指令和数据没有任何区别,都是二进制信息。5、存储单元从零开始顺序编号。6、一个存储单元可以存储8个bit(用作单位写成“b”),即8位二进制数。7、每一个CPU芯片都有许多管脚,这些管脚和总线相连,也可以说,这些管脚引出总线。原创 2011-12-03 15:29:37 · 384 阅读 · 0 评论 -
第一章 --- 第五节
计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。CPU对外部设备不能直接控制,如显示器、音响、打印机等,直接控制这些设备进行工作的是插在扩展插槽上的接口卡(例如)。然后CPU通过直接控制这些接口卡来间接控制这些外部设备,例如CPU通过控制显卡来间接控制显示器,通过控制声卡来间接控制音响,通过控制USB来间接控制打印机。 内存储器的分类从读写属性上看,分为两类:原创 2011-12-03 21:41:27 · 459 阅读 · 0 评论 -
第二章 --- 第一节
一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。区别:内部总线实现CPU内部各个器件之间的联系。外部总线实现CPU和主板上其它器件的联系。 8086CPU有14个寄存器 它们的名称为:AX BX CX DX CS DS ES SS SI DI SP BP IP PSW 8086CPU所有的寄存器都是16位的,可以原创 2011-12-05 22:17:16 · 511 阅读 · 0 评论 -
第二章 --- 第二节
一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高八位寄存器和低八位寄存器中。在以后的课程中,为了区分不同的进制,在十六进制表示的数据的后面加H(hexadecimal),在二进制表示的数据后面加B(binary),十进制表示的数据后面什么也不加。 几条汇编指令 1、通常情况下都是:操作指令 目的数或目的地址, 源操作数或源地址2、原创 2011-12-06 22:20:18 · 504 阅读 · 0 评论 -
第二章 --- 第三节
CPU访问内存单元时要给出内存单元的地址,所有的内存单元构成的存储空间是一个一维的线性空间,我们将这个唯一的地址成为物理地址。概括的讲,16位的CPU具有以下几个方面特征:1、运算器一次最多可以处理16位的数据。2、寄存器的最大宽度为16位。3、寄存器和运算器之间的通路为16位。8086有20位的地址总线,可传送20位地址,寻址能力为1M,但是8086内部为16位结构,原创 2011-12-07 22:46:29 · 487 阅读 · 0 评论 -
2.2检测题
(1) 0001H * 16 + 0000H ~ 0001H * 16 + FFFFH,也就是 00010H 到 1000FH (2) 最小段地址为1001H,最大段地址为2000H(3) 当段地址小于1001H或者段地址大于2000H的时候。原创 2011-12-08 21:17:11 · 405 阅读 · 0 评论 -
1.1检测题
1、 13位2、1024、0、10233、1024 * 8、10244、2^30、2^20、2^105、64、1、16、46、1、1、2、2、47、512、2568、二进制数原创 2011-12-03 15:44:18 · 419 阅读 · 0 评论 -
第二章 --- 第四节
错误认识: 内存被划分成了一个一个的段,每一个段有一个段地址。其实: 内存并没有分段,段的划分来自于CPU,由于8086CPU用“ 段地址*16 + 偏移地址 = 物理地址 ”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。在编程时可以根据需要,将若干地址连续的内存单元看成一个段,用段地址*16定位段的起始地址(基础地址),用偏移地原创 2011-12-08 21:07:29 · 561 阅读 · 0 评论 -
db offset dup的含义
问:汇编语言中DB 3DUP(0)是什么意思?答:DUP是重复的平均括号0重复的内容的内容是0; DB字节,图3是重复的次数。摘要:内存开辟了3个字节是0。DUP(0)的形式有时会是DUP(?)问:buffer db 60,?,60 dup(?);这句话是什么意思啊?答:数据段buffer,单位大小是byte,第一个字节值为60,第二个字节默认值,之后跟60字节取默认值。总共62字节长转载 2013-05-04 10:51:07 · 2210 阅读 · 0 评论