汇编语言基础

本文介绍了汇编语言的基础知识,包括CS:IP、DS、SS:SP、ES寄存器的作用,以及loop循环、段前缀的概念。还讲解了数据、代码、栈如何分配在不同段,offset的用法,中断处理机制以及端口的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值