CS:IP
CS为指令段的段寄存器,用来存放段地址,IP是偏移地址。如下,直接将code段的第一条作为程序执行的第一条代码。
assume cs:code
code segment
......
......
code ends
end
补充:
在链接器中,我们有时不要assume …而是使用链接器脚本,说明如下。
ENTRY(SYMBOL) :将符号SYMBOL的值设置成入口地址。
入口地址(entry point)是指进程执行的第一条用户空间的指令在进程地址空间的地址
ld有多种方法设置进程入口地址, 按一下顺序: (编号越前, 优先级越高)
1, ld命令行的-e选项
2, 连接脚本的ENTRY(SYMBOL)命令
3, 如果定义了start符号, 使用start符号值
4, 如果存在.text section, 使用.text section的第一字节的位置值
5, 使用值0
DS
DS为数据段的段寄存器,当进行数据操作寻址的时候,就将DS中的值作为段寄存器。
mov ax, [0] :0位偏移地址,这时候的数据段的段地址就是DS中的数值。
SS:SP
SS:SP为栈地址,SS为栈段地址,SP为偏移地址
ES
扩展段寄存器,例如在读取磁盘文件到内存中时,es就指向要写入的地址段。
loop循环
循环某段指令n次,n为cx寄存器中的数值。
assume cs:code
code segment
mov ax,2
m