深入理解程序设计使用Linux汇编语言
vurtual
贵在坚持·持之以恒
展开
-
汇编语言程序设计_关于分支_2021-07-09
汇编的无条件分支分为三种: 跳转 调用 中断 跳转 分为三种: 1短跳转 2近跳转 3元跳转 当跳转偏移量小于128字节时使用短跳转.在分段内存模式下,当跳转到另一个段中时使用远跳转.近跳转用于所有其他跳转. 调用 即调用函数 中断 分软件中断和硬件中断 汇编的条件分支只与EFLAGS中的5位有关: 进位 Carry标志 -CF----第0位(借位有效) 溢出Overflow标志-OF—第11位 奇偶校验Parity标志-PF–第12位 符号Sign标志-SF----第7位 零Zero标志-ZF---原创 2021-07-10 16:06:59 · 169 阅读 · 0 评论 -
6.1例题的错误_2021-07-08
.include "linux.s" .include "record-def.s" .section .data #写入的常量数据 #每个数据项以空字节填充到适当的长度 #.rept用于填充每一项。.rept告诉汇编程序将.rept和.endr之间的段重复指定次数 #在这个程序中,次指令用于将多余的空白字符增加到每一个字段末尾以将之填满 record1: .ascii "Fredrick\0" .rept 31 #填充到40字节 .byte 0 .endr .asc原创 2021-07-09 18:16:24 · 83 阅读 · 0 评论 -
寻址方式和64位系统编译32位汇编程序会出现段错误的解决方法_2021-07-03
直接寻址方式: movl ADDRESS, %EAX 将地址ADDRESS里的值加载到%eax 索引须知方式: movl string_start(,%ecx,1), %eax 从string_start处开始,将该地址于1*%ecx相加,并将所得值加载到%eax 间接寻址方式: movl (%eax), %ebx 将%eax里的值加载到%ebx 基址寻址方式: movl 4(%eax), %ebx 将%eax + 4加载到%ebx 立即数寻址方式: movl $12原创 2021-07-04 16:38:13 · 453 阅读 · 0 评论