zoukankan      html  css  js  c++  java
  • 8086汇编——课堂笔记整理2

    查表指令 XLAT

    MOV BX,OFFSET TABLE  ;table的有效地址(table的首地址,数组的首地址)存入BX

    MOV AL,4;要查表的第5个

    XLAT  ;隐含参数1.指定字节表的首地址存入BX

                            2.指定index存入AL

                            3.result存入AL

    IN OUT

    port : 32H,DX

    数据:AX,AL

    IN:external I/O device ->AL,AV,EAX

    根据端口号的长度判断

    IN AL,20H  ;20H是I/O port ID,port ID=8bit,将port ID 20H 设备中的数据->AL

    IN AX,48H  ;48H 8bit,将port ID 48H 设备中的数据->AX

    MOV DX,3FCH  ;3FCH是I/O port ID,port ID>8bit

    IN AX,DX  ;再将data从(DX)端口输入到AX中

    OUT:AL,AX,EAX->external I/O device

    OUT 32H,AX  ;将AX中数据->32H port

    MOV DX,400H  ;将port ID存入DX

    MOV AL,86H  ;将数据存入AL

    OUT DX,AL  ;将AL中的data输出到端口号=(DX)

    MOVSX  MOVZX

    MOVSX/MOVZX  reg16/32,reg/mem 8/16  ;MOVSX 有符号扩展  MOVZX 0扩展

    if (CL)=0ABH;

    MOVSX AX CL;(AX)=0FFABH

    MOVZX AX CL;(AX)=00ABH

    if (CL)=78H;

    MOVSX AX CL;(AX)=0078H

    MOVZX AX CL;(AX)=0078H

    ADD

    ADD DST,SRC 

    CF  无符号数 借位进位  OF 有符号数溢出  ZF 结果为0  PF  AF  SF

    reg,imm/reg/mem

    mem,reg/imm

    mem.mem

    imm,....

      dst,src 等长

    ADD ;半加

    ADC DST,SRC ;全加  CF

    INC DST  ;自加 无CF  地址自加,无进位,溢出循环

    INC MEM/REG   ;只对地址,无IMM

    e.g.1

    c:

    unsigned short b=7,c;

    a=b++;

    c=++b;

    assembly:

    a WORD ?

    b WORD 7

    c WORD ?

    MOV AX,b

    MOV a,AX ;不能 MOV a,b (MOV mem,mem)

    INC WORD PTR b (PTR 强制类型转换)

    INC WORD PTR b

    MOV AX,b

    MOV c,AX

    e.g.2

    32bit  DX  AX

     +      BX  CX

             DX   AX

    ADD AX,CX  ;半加产生进位存入CF

    ADC DX,BX  ;全加加上CF中产生的进位

    e.g.3

    INC AX

    ADC AX,0  ;防止进位没加

    e.g.4_1

    LEA BX,ARRAY ;将ARRAY的有效地址存入BX

    MOV AL,[BX]  ;寄存器间接寻址

    .......

    INC BX  ;地址自加,表示数组的下一个

    e.g.4_2

    MOV BX,0 ;数组的index=0

    MOV AL,ARRAY[BX]  ;寄存器相对寻址

    ......

    INC BX  ;数组的index++,数组的下一个

    e.g.5

    INC AX ;DX:AX中存的是32bit

    ADC DX,0

    错误 INC CF不变

    改为

    ADD AX,1

    ADC DX,0

    SUB  SBB

    SUB dst,src ;无CF

    dst=dst-src

    e.g.

    SUB AX,CX;减 被减数低8位,CF改变

    SBB DX,BX;减 被减数高8位,减CF

    DEC DST  ;自减,无CF

    NEG DST;取补 DST=0-DST,改变CF

    CMP DST,SRC ;DST-SRC,DST不改变

    unsigned:ZF=0 DST=SRC

                  CF=0 DST>=SRC

                  CF=1 DST<SRC

    signed:   ZF=0 DST=SRC

                 OF=SF DST>=SRC  结果是正数  SF:数的正负 -=1,+=0

                 OF<>SF DST<SRC  结果是负数  OF=overflow flag   SF=sign flag

  • 相关阅读:
    监听事件 队列 邮件发送
    elasticsearch 天气
    elasticsearch
    event 监听事件
    observer 监听的实现 laravel 框架
    中间件
    git 代码 上传到码云
    laravel 省略入口文件 index.php
    limit offset 和limit
    CSS变形和动画
  • 原文地址:https://www.cnblogs.com/HackHer/p/5349293.html
Copyright © 2011-2022 走看看