8088汇编指令速查手册

2024-06-18 10:18
文章标签 指令 速查 手册 汇编 8088

本文主要是介绍8088汇编指令速查手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 jmpi是段间跳转指令,用于x86实模式下,

      如:BOOTSEG = 0x0c70

            jmpi    4, #BOOTSEG

      假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当然段cs的值也变为0x0c70,接下来将执行指令0x0c70:0004处的指令。


8088 汇编速查手册                    


一、数据传输指令 
─────────────────────────────────────── 
    它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 
    1. 通用数据传送指令. 
        MOV    传送字或字节. 
        MOVSX  先符号扩展,再传送. 
        MOVZX  先零扩展,再传送. 
        PUSH    把字压入堆栈. 
        POP    把字弹出堆栈. 
        PUSHA  把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. 
        POPA    把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. 
        PUSHAD  把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. 
        POPAD  把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. 
        BSWAP  交换32位寄存器里字节的顺序 
        XCHG    交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) 
        CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) 
        XADD    先交换再累加.( 结果在第一个操作数里 ) 
        XLAT    字节查表转换. 
                ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 
                0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL ) 
    2. 输入输出端口传送指令. 
        IN      I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) 
        OUT    I/O端口输出. ( 语法: OUT {端口号│DX},累加器 ) 
          输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 
          其范围是 0-65535. 
    3. 目的地址传送指令. 
        LEA    装入有效地址. 
          例: LEA DX,string  ;把偏移地址存到DX. 
        LDS    传送目标指针,把指针内容装入DS. 
          例: LDS SI,string  ;把段地址:偏移地址存到DS:SI. 
        LES    传送目标指针,把指针内容装入ES. 
          例: LES DI,string  ;把段地址:偏移地址存到ES:DI. 
        LFS    传送目标指针,把指针内容装入FS. 
          例: LFS DI,string  ;把段地址:偏移地址存到FS:DI. 
        LGS    传送目标指针,把指针内容装入GS. 
          例: LGS DI,string  ;把段地址:偏移地址存到GS:DI. 
        LSS    传送目标指针,把指针内容装入SS. 
          例: LSS DI,string  ;把段地址:偏移地址存到SS:DI. 
    4. 标志传送指令. 
        LAHF    标志寄存器传送,把标志装入AH. 
        SAHF    标志寄存器传送,把AH内容装入标志寄存器. 
        PUSHF  标志入栈. 
        POPF    标志出栈. 
        PUSHD  32位标志入栈. 
        POPD    32位标志出栈.

二、算术运算指令 
─────────────────────────────────────── 
          ADD    加法. 
        ADC    带进位加法. 
        INC    加 1. 
        AAA    加法的ASCII码调整. 
        DAA    加法的十进制调整. 
        SUB    减法. 
        SBB    带借位减法. 
        DEC    减 1. 
        NEC    求反(以 0 减之). 
        CMP    比较.(两操作数作减法,仅修改标志位,不回送结果). 
        AAS    减法的ASCII码调整. 
        DAS    减法的十进制调整. 
        MUL    无符号乘法. 
        IMUL    整数乘法. 
          以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), 
        AAM    乘法的ASCII码调整. 
        DIV    无符号除法. 
        IDIV    整数除法. 
          以上两条,结果回送: 
              商回送AL,余数回送AH, (字节运算); 
          或  商回送AX,余数回送DX, (字运算). 
        AAD    除法的ASCII码调整. 
        CBW    字节转换为字. (把AL中字节的符号扩展到AH中去) 
        CWD    字转换为双字. (把AX中的字的符号扩展到DX中去) 
        CWDE    字转换为双字. (把AX中的字符号扩展到EAX中去) 
        CDQ    双字扩展.    (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令 
─────────────────────────────────────── 
          AND    与运算. 
        OR      或运算. 
        XOR    异或运算. 
        NOT    取反. 
        TEST    测试.(两操作数作与运算,仅修改标志位,不回送结果). 
        SHL    逻辑左移. 
        SAL    算术左移.(=SHL) 
        SHR    逻辑右移. 
        SAR    算术右移.(=SHR) 
        ROL    循环左移. 
        ROR    循环右移. 
        RCL    通过进位的循环左移. 
        RCR    通过进位的循环右移. 
          以上八种移位指令,其移位次数可达255次. 
              移位一次时, 可直接用操作码.  如 SHL AX,1. 
              移位>1次时, 则由寄存器CL给出移位次数. 
                如  MOV CL,04 
                    SHL AX,CL

四、串指令 
─────────────────────────────────────── 
             DS:SI  源串段寄存器  :源串变址. 
            ES:DI  目标串段寄存器:目标串变址. 
            CX      重复次数计数器. 
            AL/AX  扫描值. 
            D标志  0表示重复操作中SI和DI应自动增量; 1表示应自动减量. 
            Z标志  用来控制扫描或比较操作的结束. 
        MOVS    串传送. 
            ( MOVSB  传送字符.    MOVSW  传送字.    MOVSD  传送双字. ) 
        CMPS    串比较. 
            ( CMPSB  比较字符.    CMPSW  比较字. ) 
        SCAS    串扫描. 
            把AL或AX的内容与目标串作比较,比较结果反映在标志位. 
        LODS    装入串. 
            把源串中的元素(字或字节)逐一装入AL或AX中. 
            ( LODSB  传送字符.    LODSW  传送字.    LODSD  传送双字. ) 
        STOS    保存串. 
            是LODS的逆过程. 
        REP            当CX/ECX<>0时重复. 
        REPE/REPZ      当ZF=1或比较结果相等,且CX/ECX<>0时重复. 
        REPNE/REPNZ    当ZF=0或比较结果不相等,且CX/ECX<>0时重复. 
        REPC          当CF=1且CX/ECX<>0时重复. 
        REPNC          当CF=0且CX/ECX<>0时重复.

五、程序转移指令 
─────────────────────────────────────── 
     1>无条件转移指令 (长转移) 
        JMP    无条件转移指令 
        CALL    过程调用 
        RET/RETF过程返回. 
    2>条件转移指令 (短转移,-128到+127的距离内) 
        ( 当且仅当(SF XOR OF)=1时,OP1<OP2 ) 
        JA/JNBE 不小于或不等于时转移. 
        JAE/JNB 大于或等于转移. 
        JB/JNAE 小于转移. 
        JBE/JNA 小于或等于转移. 
          以上四条,测试无符号整数运算的结果(标志C和Z). 
        JG/JNLE 大于转移. 
        JGE/JNL 大于或等于转移. 
        JL/JNGE 小于转移. 
        JLE/JNG 小于或等于转移. 
          以上四条,测试带符号整数运算的结果(标志S,O和Z). 
        JE/JZ  等于转移. 
        JNE/JNZ 不等于时转移. 
        JC      有进位时转移. 
        JNC    无进位时转移. 
        JNO    不溢出时转移. 
        JNP/JPO 奇偶性为奇数时转移. 
        JNS    符号位为 "0" 时转移. 
        JO      溢出转移. 
        JP/JPE  奇偶性为偶数时转移. 
        JS      符号位为 "1" 时转移. 
    3>循环控制指令(短转移) 
        LOOP            CX不为零时循环. 
        LOOPE/LOOPZ    CX不为零且标志Z=1时循环. 
        LOOPNE/LOOPNZ  CX不为零且标志Z=0时循环. 
        JCXZ            CX为零时转移. 
        JECXZ          ECX为零时转移. 
    4>中断指令 
        INT    中断指令 
        INTO    溢出中断 
        IRET    中断返回 
    5>处理器控制指令 
        HLT    处理器暂停, 直到出现中断或复位信号才继续. 
        WAIT    当芯片引线TEST为高电平时使CPU进入等待状态. 
        ESC    转换到外处理器. 
        LOCK    封锁总线. 
        NOP    空操作. 
        STC    置进位标志位. 
        CLC    清进位标志位. 
        CMC    进位标志取反. 
        STD    置方向标志位. 
        CLD    清方向标志位. 
        STI    置中断允许位. 
        CLI    清中断允许位.

六、伪指令 
─────────────────────────────────────── 
          DW      定义字(2字节). 
        PROC    定义过程. 
        ENDP    过程结束. 
        SEGMENT 定义段. 
        ASSUME  建立段寄存器寻址. 
        ENDS    段结束. 
        END    程序结束.

这篇关于8088汇编指令速查手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071878

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

mysql中导入txt文件数据的操作指令

1 表tt的格式:    CREATE TABLE `tt` (   `ind` int NOT NULL auto_increment,   `name` char(100) default NULL,   PRIMARY KEY  (`ind`)  )   2 文件d.txt的内容示例:  1,a  2,b  3,c

可选择的反思指令微调

论文:https://arxiv.org/pdf/2402.10110代码:GitHub - tianyi-lab/Reflection_Tuning: [ACL'24] Selective Reflection-Tuning: Student-Selected Data Recycling for LLM Instruction-Tuning机构:马里兰大学, Adobe Research领

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网