0160-16位寄存器

环境

  • Time 2022-11-07
  • WSL-Ubuntu 22.04
  • QEMU 6.2.0
  • NASM 2.15.05

前言

说明

参考:《x86汇编语言:从实模式到保护模式》李忠
参考:https://wiki.osdev.org/CPU_Registers_x86

目标

了解 16 位寄存器,了解寻址方式。

通用目的寄存器

前面讲的八个八位的寄存器,其中 H 代表高位,L代表地位,两位组合成为一个十六位的寄存器。

16-bit 8 high bits 8 low bits Description
AX AH AL Accumulator
BX BH BL Base
CX CH CL Counter
DX DH DL Data
SI N/A SIL Source
DI N/A DIL Destination
SP N/A SPL Stack Pointer
BP N/A BPL Stack Base Pointer

先可以只认识 AX, BX, CX 和 DX 四个寄存器,其余的后面来看。

指令指针寄存器

IP(Instruction Pointer)表示指令的指针寄存器,在 8086 上可以查看 PC 寄存器,即程序计数器。

段寄存器

16-bit Description
CS Code Segment
DS Data Segment
ES Extra Segment
SS Stack Segment
FS General Purpose F Segment
GS General Purpose G Segmen

可以先认识代码段 CS 和数据段 DS。

寻址方式

8086 寻址通过 IP 和 CS 来完成,CS 表示代码段地址,DS 是数据段地址,IP 是偏移地址。
真实的物理地址是段寄存器乘以 16 加上偏移地址,16 位地址最大寻址 64K,加上向左移动 4 位,最大 1M。

大小端

当有十六位寄存器存在的时候,就需要考虑字节的存放情况,intel 架构是将低字节放到低内存地址,高字节放到高内存地址。
这种情况称为小端序,如果是反过来,则称为大端序。

总结

介绍了 CPU 的十六位寄存器,了解了指令执行的时候的寻址方式,了解什么是大小端存储。

附录

posted @   jiangbo4444  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-01-31 【Kubernetes】Service 环境变量的问题
2021-01-31 【Kubernetes】访问 Service 环境变量
2021-01-31 【Kubernetes】动态修改数据库连接
2021-01-31 【Kubernetes】Pod 注入环境变量
2021-01-31 【Kubernetes】集群访问本地服务
2021-01-31 【Kubernetes】将本地服务引入集群
2021-01-31 【Kubernetes】访问 Postgresql 数据库
点击右上角即可分享
微信分享提示