• MOV指令不能用来设置CS和IP寄存器的值。 • 为啥? 原因大家课后讨论。
• 下面是一个使用 MOV 指令的例子:
#MAKE_COM# ; 表示,这个是一个com程序 ORG 100h ;COM 程序必须的 MOV AX, 0B800h ; 将ax设置为 B800h. MOV DS, AX ; 将 AX 值拷贝到 DS. MOV CL, 'A' ; 将ASCII 码 'A'的值传送到cl,这个值是 41h. MOV CH, 01011111b; 将ch设置为二进制的01011111b MOV BX, 15Eh ; 将 BX 设置成 15Eh. MOV [BX], CX; 将 CX 放到 bx 指出的内存单元 B800:015E RET ; 返回操作系统
• SI 源变址寄存器 source index register. • DI 目的变址寄存器 destination index register. • BP 基址指针寄存器 base pointer. • SP 堆栈寄存器stack pointer.
通用寄存器
• 4个通用寄存器(AX, BX, CX, DX) 在使用时 分为两个8位寄存器, 例如: 假设AX= 0011000000111001b, AH=00110000b AL=00111001b。当你修改 其中任意8位值,整个16位寄存器的值同样 改变。同样对于其他的3 个寄存器,“H”表 示高8位,“L”表示低8位。
• 这种,由两个寄存器生成的地址被称为有效 有效 地址 (effective address) • 默认下,BX, SI 及 DI 与 DS协同工作,BP SP 与 SS 寄存器协同工作。 • 其余的通用寄存器不能形成有效地址!同样, 尽管 • BX可以形成有效地址,但是BH BL不能!