2026/4/16 13:59:04
网站建设
项目流程
电商网站建设实训总结与体会,安监局网站建设方案,做网站的公司一般怎么培训销售,dede本地搭建网站一、寄存器
寄存器是中央处理器#xff08;CPU#xff09;内部集成的一组高速、小型的存储单元#xff0c;其容量通常仅为几个字节#xff08;如8位、16位、32位或64位#xff09;#xff0c;但访问速度远高于主内存#xff08;RAM#xff09;甚至高速缓存#xff08…一、寄存器寄存器是中央处理器CPU内部集成的一组高速、小型的存储单元其容量通常仅为几个字节如8位、16位、32位或64位但访问速度远高于主内存RAM甚至高速缓存Cache。它们直接与CPU的算术逻辑单元ALU、控制单元CU以及其他执行部件相连是CPU执行指令过程中最核心的数据暂存和传递媒介。寄存器的主要用途包括暂存参与运算的操作数、保存运算结果、存储程序执行状态、管理程序流程、支持内存寻址与栈操作、控制CPU运行模式与系统功能等。但由于寄存器数量有限但据相关统计多于560个包含部分保留寄存器编译器和操作系统需高效利用这些宝贵资源。并正因其极低的访问延迟和紧密耦合于CPU执行流水线的特性寄存器被视为计算机体系结构中“最快”的存储层级对程序性能具有决定性影响。可以说没有寄存器现代高性能计算将无法实现。通用寄存器寄存器名称8008/80518086x86x64作用累加器AL, AHAXEAXRAX算术运算、I/O、函数返回值基址寄存器BL, BHBXEBXRBX存储数据基地址计数寄存器CL, CHCXECXRCX循环计数、移位次数数据寄存器DL, DHDXEDXRDXI/O端口、乘除高位结果源变址寄存器SILSIESIRSI字符串/数组源地址目标变址寄存器DILDIEDIRDI字符串/数组目标地址栈指针SPLSPESPRSP指向栈顶基址指针BPLBPEBPRBP指向当前栈帧基址扩展通用寄存器R8B–R15BR8W–R15WR8D–R15DR8–R15额外通用用途参数传递System V ABI注R8–R15 在 x64 中新增8086/x86 不存在它们支持 8/16/32 位子寄存器如 R9D、R10W、R11B但无高8位如 AH 类似物。标志寄存器寄存器名称8086x86x64作用标志寄存器FLAGSEFLAGSRFLAGS存储状态与控制标志可修改标志位标志位位位置01作用CF0NC无进位CY有进位记录无符号运算的进位或借位PF2PO奇校验PE偶校验反映结果低8位中“1”的个数奇偶性AF4NA无辅助进位AC有辅助进位用于BCD运算低4位是否产生进位/借位ZF6NZ非零Z零运算结果是否为零SF7PL正NG负运算结果的符号最高位TF8正常工作单步中断单步调试模式控制IF9DI中断禁止EI中断允许控制可屏蔽中断是否响应DF10ED地址递增DD地址递减控制字符串操作方向OF单步中断NV无溢出OV有溢出记录有符号运算是否溢出不可修改的标志位标志/域位位置值 0 的含义值 1 的含义架构支持IOPL12–13I/O 特权级为 0最高权限注实际为 2 位字段000, 011, 102, 113I/O 特权级为 1/2/3权限逐级降低CPL 必须 ≤ IOPL 才能执行 I/O 指令8086 起支持NT14当前任务不是嵌套任务当前任务是由另一任务调用的嵌套任务8086 起支持x64 长模式下无效RF16正常处理调试异常如断点临时屏蔽调试异常用于单步跳过断点80386 起支持VM17处于保护模式非虚拟 8086 模式处于虚拟 8086 模式在保护模式下模拟实模式80386 起支持x64 长模式下无效AC18禁用对齐检查即使 CR0.AM1 也不生效启用对齐检查需同时满足 CR0.AM1 且 CPL380486 起支持VIF19虚拟中断禁止虚拟中断允许作为 IF 的虚拟镜像Pentium 起支持VIP20无虚拟中断挂起有虚拟中断正在挂起Pentium 起支持ID21CPU 不支持 CPUID 指令或无法修改该位CPU 支持 CPUID 指令可通过置位测试80486DX 及以后支持指令指针寄存器寄存器名称8086x86x64作用指令指针IPEIPRIP指向下一条要执行的指令地址注意不能像通用寄存器那样直接MOV RIP, RAX非法必须用JMP/CALL。段寄存器寄存器名称8086x86x64作用代码段CSCSCS当前代码段选择数据段DSDSDS默认数据段选择栈段SSSSSS栈段选择附加段ESESES额外数据段数据段FSFSFSOS 特殊用途数据段GSGSGSOS 特殊用途控制寄存器寄存器名称x86x64作用CR0CR0CR0控制保护模式、分页、协处理器等CR1保留保留未使用CR2CR2CR2页错误时的线性地址CR3CR3CR3页目录基地址含PCID in x64CR4CR4CR4启用PSE、PGE、DE、SMEP等扩展CR8—CR8APIC 中断优先级屏蔽控制寄存器仅能在特权级别CPL0通过MOV CRx, reg/MOV reg, CRx访问不可拆分。调试寄存器寄存器名称x86x64作用DR0DR0DR0硬件断点地址 0DR1DR1DR1硬件断点地址 1DR2DR2DR2硬件断点地址 2DR3DR3DR3硬件断点地址 3DR4DR6别名DR6别名若 CR4.DE1 则不可用DR5DR7别名DR7别名若 CR4.DE1 则不可用DR6DR6DR6断点状态哪个触发、原因DR7DR7DR7断点控制类型、长度、使能描述符表与任务寄存器寄存器名称x86x64作用GDTRGDTRGDTR全局描述符表基址限长48位LDTRLDTRLDTR局部描述符表选择子16位IDTRIDTRIDTR中断描述符表基址限长48位TRTRTR任务寄存器指向TSS这些是特殊结构寄存器通过LGDT/SGDT、LIDT/SIDT、LTR/STR等专用指令访问不可拆分。模型特定寄存器MSR寄存器名称示例x86x64作用IA32_APIC_BASEPentium支持APIC 基地址IA32_SYSENTER_CSP6支持快速系统调用代码段IA32_SYSENTER_ESPP6支持快速系统调用栈指针IA32_SYSENTER_EIPP6支持快速系统调用入口IA32_EFERAMD K6x64 必需启用长模式LME、NX bitIA32_STAR / LSTAR—支持syscall/sysret 目标地址MSR 数量庞大数百个通过RDMSR/WRMSR指令访问需 CPL0每个为 64 位不可拆分。8086 和早期 x86 不支持。x87 寄存器寄存器名称作用简述ST0–ST7浮点运算栈式寄存器ST0 为栈顶FPCW控制浮点运算的舍入模式和异常屏蔽FPSW记录浮点状态包括异常标志和栈顶指针FPTW标记每个 STn 寄存器内容的有效性FIP保存引发浮点异常的指令地址FDP保存引发浮点异常的操作数内存地址FOP保存最后执行的 x87 指令操作码MMX 寄存器寄存器名称作用简述MM0–MM7用于整数 SIMD 运算复用 x87 寄存器的尾数部分SSE / AVX / AVX-512 寄存器寄存器名称作用简述XMM0–XMM31128 位向量寄存器用于 SSE/AVX 标量与向量运算YMM0–YMM31256 位向量寄存器扩展 XMM 的高 128 位ZMM0–ZMM31512 位向量寄存器扩展 YMM 的高 256 位K0–K7操作掩码寄存器用于条件执行K0 读恒为全 1不可写MXCSR控制和记录 SIMD 浮点状态如舍入、异常、非规格化数处理MPX 边界寄存器寄存器名称作用简述BND0–BND3存储指针访问的下限和上限地址边界BNDCFGU用户模式边界检查配置BNDCFGS内核模式边界检查配置BNDSTATUS记录边界检查失败原因#BR 异常时二、助记符一、数据传送类分类名称类型作用示例数据传送mov指令将数据从源操作数复制到目的操作数mov ax, bx数据传送push指令将操作数压入栈顶SP/RSP 自减后写入push cx数据传送pop指令从栈顶弹出数据到操作数读取后 SP/RSP 自增pop dx数据传送pushf指令将标志寄存器压入栈pushf数据传送popf指令从栈弹出数据到标志寄存器popf数据传送in指令从指定 I/O 端口读取数据in al, 60h数据传送out指令将数据写入指定 I/O 端口out 61h, al二、算术运算类分类名称类型作用示例算术运算add指令执行加法目的 目的 源add ax, 100算术运算adc指令带进位加法加上 CF 标志adc dx, ax算术运算sub指令执行减法目的 目的 - 源sub bx, cx算术运算mul指令无符号乘法被乘数隐含在 AL/AX/EAX 中结果在 AX/DX:AX/EDX:EAXmul bl→ AX AL × BL算术运算div指令无符号除法被除数隐含在 AX/DX:AX 中div cl→ AL商, AH余数算术运算inc指令对操作数加 1不影响 CFinc si比较操作cmp指令比较两操作数源 - 目仅更新标志位ZF、CF、SF、OF 等不保存结果cmp ax, bx三、逻辑与移位类分类名称类型作用示例逻辑运算and指令按位与常用于清零特定位and al, 0Fh逻辑运算or指令按位或常用于置位特定位or dh, 80h移位操作shl指令逻辑左移等价于乘以 2ⁿshl ax, 1移位操作shr指令逻辑右移等价于无符号除以 2ⁿshr bx, cl四、程序控制转移类1无条件转移分类名称类型作用示例控制转移jmp指令无条件跳转到目标地址jmp label控制转移call指令调用子程序压入返回地址后跳转call func控制转移ret指令近返回弹出返回地址到 IP/EIPret控制转移retf指令远返回弹出 IP 和 CS跨段返回retf2条件转移分类名称类型作用示例控制转移je指令若 ZF1相等/为零则跳转je equal控制转移jne指令若 ZF0不等/非零则跳转jne not_equal控制转移jb指令若 CF1无符号小于则跳转jb below控制转移jnb指令若 CF0无符号大于等于则跳转jnb not_below控制转移ja指令若 CF0 且 ZF0无符号大于则跳转ja above控制转移jna指令若 CF1 或 ZF1无符号小于等于则跳转jna not_above控制转移jcxz指令若 CX0 则跳转不依赖标志jcxz skip控制转移loop指令CX 减 1若 ≠0 则跳转用于循环loop repeat五、字符串操作类分类名称类型作用示例字符串操作movsb指令传送一个字节[DS:SI] → [ES:DI]自动更新 SI/DImovsb字符串操作movsw指令传送一个字2 字节SI/DI ±2movsw字符串操作rep指令前缀重复执行后续字符串指令 CX/ECX 次rep movsb六、中断与系统控制类分类名称类型作用示例系统控制int指令触发软件中断调用中断服务程序int 21h系统控制iret指令中断返回恢复 IP、CS 和 FLAGSiret系统控制cli指令清除 IF 标志禁止可屏蔽中断cli系统控制sti指令设置 IF 标志允许可屏蔽中断sti系统控制nop指令空操作占用 1 字节用于延时或对齐nop七、汇编伪操作与操作符非 CPU 指令分类名称类型作用示例程序结构start伪操作/标号通常用作程序入口标号非关键字但约定俗成start:mov ax, data程序结构end伪操作标记汇编源程序结束可指定入口点end start数据定义db伪操作定义字节8 位数据msg db Hi, 0数据定义dw伪操作定义字16 位数据len dw 256数据定义dd伪操作定义双字32 位数据ptr dd offset var数据定义dup伪操作修饰符重复初始化若干相同值buf db 100 dup(?)地址操作offset操作符获取变量或标号的段内偏移地址mov ax, offset buffer类型指定byte ptr操作符显式指定内存操作数为字节类型mov byte ptr [bx], 0类型指定word ptr操作符显式指定内存操作数为字类型mov word ptr [si], ax跳转修饰short操作符指明短跳转±127 字节内jmp short next跳转修饰near ptr操作符表示段内近调用或跳转call near ptr proc跳转修饰far ptr操作符表示段间远调用或跳转jmp far ptr fproc通用指针ptr操作符明确操作数为指针类型常与 near/far 连用jmp dword ptr [table]三、其他一不同语言格式对比类别IntelATT示例add eax,0x4add $0x4,%eax使用的工具MASM、NASMGNU工具gcc、gdb……特定前缀/寄存器%操作数$操作数的顺序左目的操作数右源操作数左源操作数右目的操作数示例程序人不够聪明只能看千问的答案啦; ; demo.asm —— 标准 DOS MASM 程序 ; 功能演示通用寄存器、标志、栈、算术、逻辑、字符串、中断 ; 环境DOS如 DOSBox ; 编译命令 ; masm demo.asm; ; link demo.obj; ; demo.exe ; .MODEL SMALL ; 小内存模型代码段数据段各≤64KB .STACK 200h ; 定义200h字节栈空间 .DATA src_str DB HELLO$ ; 源字符串DOS中断要求以$结尾 dst_buf DB 6 DUP(?) ; 目标缓冲区5字符结束符 msg_len 5 ; 字符串长度常量 new_line DB 0Dh, 0Ah, $ ; 回车换行符 .CODE MAIN PROC ; 初始化 DS 指向数据段[2,5](ref) MOV AX, DATA MOV DS, AX MOV ES, AX ; ESDS用于字符串指令 ; 1. 通用寄存器操作 MOV AX, 100 ; 累加器 MOV BX, 200 ; 基址寄存器 ADD AX, BX ; AX 300 MOV DX, AX ; 数据寄存器保存结果 ; 2. 标志寄存器操作 PUSHF ; 压入标志寄存器 CMP AX, 300 ; 比较ZF1 POPF ; 弹出恢复标志 ; 3. 条件跳转 JNE skip_section ; 若不等则跳实际不跳 ; 4. 计数与字符串复制 [6](ref) MOV CX, msg_len ; CX 计数寄存器 MOV SI, OFFSET src_str ; SI 源变址寄存器 MOV DI, OFFSET dst_buf ; DI 目标变址寄存器 CLD ; 清方向标志DF0地址递增 REP MOVSB ; 重复传送字节CX次 ; 在目标字符串末尾添加DOS结束符$ MOV AL, $ MOV [DI], AL skip_section: ; 5. 逻辑与移位 MOV AL, [dst_buf] ; 取首字符 H (48h) AND AL, 0Fh ; 保留低4位 → 08h SHL AL, 1 ; 左移1位×2 SHR AL, 1 ; 右移1位÷2恢复原值低4位 ; 6. DOS 中断输出字符串 [5](ref) ; 显示源字符串 MOV AH, 09h ; DOS功能号显示字符串 MOV DX, OFFSET src_str ; DS:DX指向字符串 INT 21h ; 显示换行 MOV AH, 09h MOV DX, OFFSET new_line INT 21h ; 显示复制后的字符串 MOV AH, 09h MOV DX, OFFSET dst_buf INT 21h ; 7. 程序退出 MOV AX, 4C00h ; DOS功能号程序退出 INT 21h MAIN ENDP ; 过程结束[1](ref) END MAIN ; 程序结束入口为MAIN[5](ref): 终止程序 INT 21h SKIP: ; 理论上不会执行至此 HLT ; 停机占位 MAIN ENDP END MAIN