本博文系列参考自>第三版,作者:王爽
8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。除了前面介绍的寄存器。本博文将介绍最后一个寄存器,标志寄存器。不同于之前的寄存器,标志寄存器是按位起作用的。其每一位都有特殊的含义。
8086标志寄存器的结构如下图所示:
标志寄存器的1,3,5,12,13,14,15都没有特殊含义。其0,2,4...
分类:
编程语言 时间:
2016-04-29 15:52:04
阅读次数:
276
本博文系列参考自>第三版,作者:王爽
前面已经通过类似[0]和[bx]的方法进行了内存定位了。本章将涉及更多内存地址定位和编程的方法。
7.1 and 和 or 指令
(1) and指令,逻辑按位与指令
例如:
mov al,01100011B
and al,00111011B
执行后 al=00100011B
and指令可以用来将某个数的位置为零。
比如我们要...
分类:
编程语言 时间:
2016-04-26 21:36:02
阅读次数:
202
本博文系列参考自>第三版,作者:王爽
计算机CPU进行数据处理包括两个基本的问题:1.数据在何处? 2.数据有多大? 本章作为一个前面内容的总结性章节,主要来说明这两个问题。我们定义两个符号reg和sreg。其中reg为寄存器,sreg为段寄存器
reg包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,...
分类:
编程语言 时间:
2016-04-26 20:38:51
阅读次数:
207
本博文系列参考自>第三版,作者:王爽
1.[bx]和内存单元的描述
[bx]与我们前面见过的[0]类似,mov ax,[0] 的意思是将内存地址为DS:0的两字节内容存入ax中。其中[0]中的0代表的是偏移地址。
类似的,我们有 mov al,[0]的意思是将内存地址为DS:0的单字节内容存入al中。那么我们可以大胆的推断mov ax,[bx]代表的是将偏移地址为bx寄存器中的值的内...
分类:
编程语言 时间:
2016-04-22 20:38:16
阅读次数:
218
本博文系列参考自>第三版,作者:王爽
在前面的介绍的程序中只有一个代码段。那么如果我们需要将代码,数据分别存储在不同的内存空间应该怎么办呢?我们知道我们不可能随便使用任何一段内存空间,因为我们这段内存地址空间可能存储着非常重要的内容。其实,这只是我们考虑的太多啦,一旦我们将程序载入内存后,操作系统为我们分配的用于程序运行的内存空间都是安全的,绝对不会与其他程序的内存空间相重叠的。
往往...
分类:
编程语言 时间:
2016-04-22 19:09:45
阅读次数:
250
本博文系列参考自>第三版,作者:王爽
前面的几章中我们断断续续的学习了一些指令,但是从来没有完整的通过汇编语言编写一个可执行文件即.exe文件。从本章开始我们将开始使用汇编语言并通过编译器编译链接一个完整的可执行文件。
4.1 一个源程序从写出到执行的过程
如下图所示,为一个完整的汇编程序到执行的过程:
上图的过程可以总结成以下几个步骤:
(1) 根据汇编语言语法规则...
分类:
编程语言 时间:
2016-04-19 19:51:19
阅读次数:
320
程序到了内存中我们分为code(代码)段,也就是大部分指令段,数据段,栈 6.1 在代码段中使用数据 上图 dw表示define word定义一个字,16位 会出现cs执行的前16位是数据段,后面才是指令,所以要把IP设成10h 或者直接在第一条指令前面在start,再在最后面的end start ...
分类:
编程语言 时间:
2016-04-11 22:38:43
阅读次数:
230
这里讲一个特殊的寄存器,flag 先看flag的16位显示 11.1 zf 指令执行后,结果0,ZF=1 指令执行后,结果不为0,ZF=0 11.2 pf 指令执行后,所有bit位中1的个数是否位偶数,若为偶数,那么pf=1 若为奇数,pf=0 11.3 sf 指令执行后,结果负,SF=1 指令执行 ...
分类:
编程语言 时间:
2016-04-11 22:36:53
阅读次数:
217
这章讲一些寻址方法,对前面寻址方法的总结把 7.1 and or 2个指令 上栗子 mov al,00001111b and al,11110000b al=00000000b mov al,00001111b or al,11110000b al=11111111b 7.2 ASCII码 之前就写 ...
分类:
编程语言 时间:
2016-04-11 22:30:55
阅读次数:
252
CPU由运算器,控制器,寄存器等器件组成 汇编指令可以操作寄存器中的数据。如mov AX,BX就是把寄存器BX中的值加上寄存器AX中的值,再把结果放在AX上 8086CPU的寄存器的有14个,这里就讲AX,BX,CX,DX,CS,IP这么几个先 2.1通用寄存器 就是指AX,BX,CX,DX 用来存 ...
分类:
编程语言 时间:
2016-04-11 22:22:19
阅读次数:
177