x86汇编小结一

x86处理器架构

架构图.jpg

寄存器

  • AX:通用寄存器,低8位为AL寄存器,高8位为AH寄存器。一般是累加寄存器。
  • BX:通用寄存器,低8位为BL寄存器,高8位为BH寄存器。一般还是基址寄存器。
  • CX:通用寄存器,低8位为CL寄存器,高8位为CH寄存器。一般作循环计数器。
  • DX:通用寄存器,低8位为DL寄存器,高8位为DH寄存器。一般还用于与外设进行数据交换。
  • CS:代码段寄存器。
  • IP: 代码段指针寄存器。只有处理器才能改变它的内容。
  • ES:附加段寄存器。
  • DS:数据段寄存器。
  • SS:栈段寄存器。
  • SP:栈段指针寄存器。
  • SI:源索引寄存器。
  • DI:目标索引寄存器。
  • EFLAGS:存放CPU的2类标志的寄存器。
    • 状态标志:反映处理器当前的状态。
    • 控制标志:用来控制处理器的工作方式。
      状态标识每次运算后自动产生,控制标志的值则有指令设置。
标志 意义
OF 溢出标志;OF=1表示2个有符号数运算超出可表示范围。
DF 方向标志(迭代方向,类比i++或者i--);执行指令后,源或目的指 针加法还是减法。OF=1表示减法
IF 中断允许标志;IF=1表示CPU响应终端信号。 属于控制标志
SF 符号标志;SF=1标识运算结果最高位为1。
ZF 零标志;ZF=1表示结果为0
AF 辅助进位标志
PF 奇偶标志;进行奇偶校验。PF=1表示低8位中有偶数个1。
CF 进位/错位标志;
TF 单步状态标识,用于程序调试,TF=1,每次执行一条指令会暂停。 属于控制标志

常用指令

  • mov 指令:
    mov 目的, 源。
    这里注意:

    • mov es,0xb800。这种写法是错误的,intel不允许将一个立即数传给* 段寄存器*。必须写2条指令:mov ax ,0xb800。mov es,ax。
    • mov [0x01], [0x02]。这种写法也是错误的,处理器不允许在2个内存单元之间直接进行数据传输的操作。
  • movsb 指令
    movsb和movsw用于把内存中的一个地方数据批量地传送到另一个地方。原始数据串地址由【DS】:【SI】指定,目标数据串地址由【ES】:【DI】指定,个数由CX指定。传送方向EFLAGS寄存器中的DF标志指定。DF=0,表示正向传送,SI和DI加1或加2(低地址到高地址)。DF=1表示反向传送,类比。

  • inc和dec 指令:
    inc表示自增,dec表示自减。
    inc al。
    inc byte [ax]。

  • AND 指令:
    与运算,有0得0,全1为1。
    AND指令会影响EFLAGS:OF和CF位被清零,SF ZF PF位状态依计算结果而定,AF状态未定义。

  • OR 指令:
    或运算,有1得1,全0为0。
    OR指令会影响EFLAGS寄存器:OF和CF位被清零,SF ZF PF位状态依计算结果而定,AF状态未定义。

  • XOR 指令:
    异或:相异为1,相同为0。
    例如:xor dx, dx。 则将dx和dx异或结果存放在dx中。这条指令可以将dx清零。同样效果的指令:mov dx,0。但是前者机器码是31 D2,后者的机器码是BA 00,00。xor指令不但更短,并且2个操作数都是通用寄存器,执行速度更快。

  • shr逻辑右移指令:
    逻辑右移指令执行时,会将操作数连续地向右移动指定位数,每移动一次, “挤”出来的比特位被移到标志寄存器的CF位,左边空出来的补0。

  • shl逻辑左移指令:
    和逻辑右移指令类似,会将操作数连续地向左移动指定位数,每移动一次,“挤”出来的比特位被移到标志寄存器的CF位,右边空出来的补0。

  • rol 循环右移指令:

  • rol 循环左移指令:

  • DB 等指令:

    • DB的意思是声明字节(8)数据,跟在它后面的操作数都占一个字节的长度。例如:DB 0
    • DW指令:用于声明字(16)数据。
    • DD指令:用于声明双字(32)数据。
    • DQ指令:用于声明四字(64)数据。
      这一系列的指令都属于伪指令,伪指令没有对应的及其指令,仅仅在编译阶段由编译器执行。程序执行时,伪指令已经不存在。
  • DIV 指令:
    8086处理器提供2种类型的除法:

    • 16位二进制除以8位二进制
      - 被除数:AX寄存器提供。
      - 除数:通用寄存器或者内存单元提供。
      - 商:存在AL寄存器中。
      - 余数:存在寄存器AH中。
    • 32位的二进制数除以16位的二进制数
      - 被除数:高16位在DX中,低16位在AX中。
      - 除数:通用寄存器或者内存单元提供。
      - 商:存在AX寄存器中。
      - 余数:存在DX寄存器中。
  • in 指令:
    in指令是从端口读,只有:
    in al(端口号), dx;
    in ax(端口号),dx;
    in al(端口号),0xf0;
    也就是说in指令的目的操作数必须是寄存器AL或者AX(8位的端口就是AL,16位的端口就是AX)。同时,in指令的源操作数应该是寄存器DX或者立即数(端口号)。

  • out 指令:
    out指令向通过端口向外围设备发送数据。和in指令相反源操作操作数是AL或AX,目的操作数是立即数(端口号)或者DX。
    out 0x37(端口号),al
    out dx(端口号), ax

寻址方式

  • 寄存器寻址
  • 立即数寻址
  • 内存寻址
    其实就是指令中提供偏移地址,加上段寄存器最后形成地址。
    • 直接寻址(操作数是一个偏移地址)
    • 基址寻址
      用基址寄存器BX或者BP来提供偏移地址。采用BX基址寄存器时,默认 段寄存器是DS,采用BP基址寄存器时,默认的寄存器是SS。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,029评论 8 114
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 7,703评论 1 10
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,400评论 0 1
  • 指令是使计算机执行某种特定操作的二进制编码。8086 CPU指令系统有133条指令,通常分为数据寻址方式和程序寻址...
    刀月水阅读 1,603评论 0 1
  • 我一直以为,我们都还只是孩子,无忧无虑的孩子,大人的世界离我们太过遥远,远得就像天一样,可是,时光开始了无情地飞逝...
    ancientear阅读 349评论 0 3