386和486机器的32位编程技术解析
1. 模块相关知识
1.1 模块开发与链接
在编程中,模块开发具有诸多优势。首先,每个模块可单独开发,实现并行开发,从而缩短开发时间。其次,更容易定位错误来源。此外,这些模块还能与C等高级语言进行链接。在模块定义中,PUBLIC用于声明公共符号,EXTRN用于声明外部符号。一个程序的入口和出口模块会在END语句后有一个标签。
1.2 模块中的参数传递
参数传递有多种方式:
- 通过寄存器 :优点是寄存器执行速度快,但可用寄存器数量有限,能传递的值不多。
- 通过栈 :不占用可用寄存器,但栈处理错误可能导致系统崩溃。
- 通过内存 :有较大的数据存储区域,但程序可能不具备跨计算机的可移植性。
1.3 汇编语言与C程序的结合
汇编语言与C程序结合时,采用内联方式。参数传递除数组按引用传递外,其他按值传递,且按参数列表逆序传递。参数压入栈后,C会为FAR过程压入CS:IP,为NEAR过程压入IP。
2. 80386/80486机器的实模式特性
2.1 寄存器差异
8086/286的最大寄存器大小为16位,而386/486将寄存器最大大小扩展到32位。例如,AX变为EAX,BX变为EBX等。386/486中的EAX可按AL、AH、AX或EAX访问,但其高16位不能作为单独寄存器访问,这一规则同样适用于EBX、ECX和EDX。此外,DI、SI、BP和SP分别变为EDI、E
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



