3.80386的寄存器结构 80386中共有7类32个寄存器,它们是:通 用寄存器组、指令指针和标志寄存器、段寄存 器、控制寄存器、调试寄存器和测试寄存器等。 (1)通用寄存器组 8个32位寄存器:EAX、EBX、ECX、EDX、 ESⅠ、EDI、EBP、ESP 8个16位寄存器:AX、BX、CX、DX、SI DⅠ、BP、SP 8个8位寄存器:AH、AL、BH、BL、CH CL、DH、DL
3. 80386的寄存器结构 80386中共有7类32个寄存器,它们是:通 用寄存器组、指令指针和标志寄存器、段寄存 器、控制寄存器、调试寄存器和测试寄存器等。 ⑴ 通用寄存器组 • 8个32位寄存器:EAX、EBX、ECX、EDX、 ESI、EDI、EBP、ESP • 8个16位寄存器:AX、BX、CX、DX、SI、 DI、BP、SP • 8个8位寄存器:AH、AL、BH、BL、CH、 CL、DH、DL
31 161587032位 AH AL EAX AX BH BL EBX BX CH CL ECX CX DH DL EDX DX SI ESI DI EDI BP EBP SP ESP
31 16 15 8 7 0 32 位 AH AL EAX AX BH BL EBX BX CH CL ECX CX DH DL EDX DX SI ESI DI EDI BP EBP SP ESP
注:要访问80386的32位寄存器,程序中必须用 伪指令“.386″来说明。 例15-1使用80386指令编程,实现两个32 位数的乘法。 MODEL SMALL;选择 SMALL模式 386 选择80386指令集 STACK SEGMENT PARA STACK DB256DUP(∴) STACK ENDS
注:要访问80386的32位寄存器,程序中必须用 伪指令“.386”来说明。 例15-1 使用80386指令编程,实现两个32 位数的乘法。 .MODEL SMALL ; 选择SMALL模式 .386 ;选择80386指令集 STACK SEGMENT PARA STACK DB 256 DUP(?) STACK ENDS
DATA 数据段开始 NUM1DD01234567H;定义双字 NUM2 DD 89ABCDEFH ANs DQ ;定义四字 CODE ;代码段开始 START PROC FAR BEGIN: PUSH DS SUB AXAX PUSH AX MOV AX,@DATA;装载数据段, 注意DATA前面有符号a
.DATA ;数据段开始 NUM1 DD 01234567H ;定义双字 NUM2 DD 89ABCDEFH ANS DQ ? ;定义四字 .CODE ;代码段开始 START PROC FAR BEGIN: PUSH DS SUB AX, AX PUSH AX MOV AX, @DATA ;装载数据段, 注意DATA前面有符号“@
MOV DS, AX MOV EAX NUM1 MUL DWORD PTR NUM2 MOV DWORD PTR ANSOL, EAX MOv DWORD PTR 4, EDX RET START ENDP END BEGIN
MOV DS, AX MOV EAX, NUM1 MUL DWORD PTR NUM2 MOV DWORD PTR ANS[0], EAX MOV DWORD PTR ANS[4], EDX RET START ENDP END BEGIN