汇编语言
文章平均质量分 55
FreeeLinux
A3GM5H3647LPD4QVYMYAER2S47P4WZ2UKBXBCGZES2V62WEY2HULQA
展开
-
nasm汇编以及bochs调试
先说下编译的命令:编译: nasm -f elf hello.asm -o hello.o加权限: chmod +x hello.o链接: ld -m elf_i386 -s -o hello hello.o直接运行就可以了。原创 2017-03-15 15:44:03 · 2045 阅读 · 0 评论 -
全面剖析《自己动手写操作系统》的pmtest1.asm
段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限转载 2017-03-18 10:34:23 · 799 阅读 · 0 评论 -
实模式和保护模式
保护模式的起源最开始的程序寻址是直接的“段:偏移”模式,这样的好处是所见即所得,程序员指定的地址就是物理地址,物理地址对程序员是可见的。但是,由此也带来两个问题:无法支持多任务(程序员多个程序可能指定运行的物理地址一样)程序的安全性无法得到保证(用户程序可以改写系统空间或者其他用户的程序内容)实模式将整个物理内存看成分段的区域,程序代码和用户程序没有区别对待,而且每一个指针都是指向“实在”的物转载 2017-03-14 17:56:27 · 560 阅读 · 0 评论 -
汇编基础——常用寄存器及其用途
通用寄存器的主要用途寄存器的分类寄存器主 要 用 途通用寄存器数据 寄存器AX乘、除运算,字的输入输出,中间结果的缓存AL字节的乘、除运算,字节的输入输出,十进制算术运算AH字节的乘、除运转载 2017-03-14 18:05:58 · 826 阅读 · 0 评论 -
AT&T汇编之使用C库函数
本文以获取CPUID的程序为例,来演示如何使用AT&T汇编调用C库函数。首先看一下纯汇编代码示例:.section .data message:• .asciz "CPUID:xxxxxxxxxxxx\n" len = . - message ...原创 2018-12-20 23:27:29 · 905 阅读 · 0 评论 -
AT&T汇编之32位与64位系统调用
查看系统调用号locate unistd_64less /usr/include/x86_64-linux-gnu/asm/unistd_64.hLinux 32位系统调用和64位系统调用的区别系统调用号不同。如sys_write在32位下是4,在64位下是1。调用方法不同。我们在32位下用int 80H中断进行系统调用,而64位下需要用syscall指令进行系统调用。传参方式不...原创 2018-12-17 00:06:05 · 2505 阅读 · 1 评论 -
AT&T汇编之冒泡排序
冒泡排序,这个已经很多年没有写过的算法,今天没事干用AT&T汇编实现了一遍,下面就来说说怎么用汇编来实现这个冒泡排序算法。写任何代码前一定要想好,必须写伪代码是我的风格。尤其写算法,即便是一个简单的冒泡排序,如果不想好思路,贸然动手,也可能会遇到一些坑浪费时间。示例数组: 11, 9, 8, 8, 7, 10冒泡排序的思想就是两两交换,直到数组有序为止。过程分析:1st: 9...原创 2019-01-04 15:16:04 · 1037 阅读 · 2 评论