个人总结
vim 可以新建文件,文件类型通过文件名来设置
gedit 可以新建文件,文件类型通过文件名来设置
as linux下的编译器
as -gstabs -o 新文件名 文件名.s,生成一个新的.o文件
ld -o 新文件名 文件名.o,生成一个可执行文件
gcc 可以对代码进行编译,如果没有特殊标注的话直接生成.out文件,即可以直接运行的文件,具体格式如下:
gcc 文件名,将会生成a.out文件,可以直接运行
gcc 文件名 -o 新文件名,将会生成一个新的可执行文件(二进制)
gcc -o 新文件名 文件名,将会生成一个新的可执行文件(二进制)
gcc -E 文件名 -o 新文件名,将会生成一个新的.i文件(文本)
gcc -S 文件名 -o 新文件名,将会生成一个新的.s文件(文本)
gcc -c 文件名 -o 新文件名,将会生成一个新的.o文件(二进制)
cat 文件名,可以打开文件
objdump -d 文件名,将会对.o或者可执行文件进行反汇编
objdump -d -j.data 文件名,查看可执行文件的字段存储情况
gdb 文件名(无后缀),对文件进入调试环境,加上-q后缀可以不显示提示信息,注意执行前需要先进行:gcc -g 文件名 -o 无后缀
gdb -tui 文件名可以进行分屏,以同时看到程序代码以及调试操作
通过file 文件名(无后缀)将程序放入分屏中
layout展示asm汇编文件
objdump -d 可执行文件>文件(反汇编)
refresh刷新界面
(gdb)l,查看源代码指令,在l后面加上行数可以指定输出到某一行,否则每10行一个输出,也可以加上函数名
(gdb)b 行数,对当前行数设置断点
(gdb)b*_start+行数,在_start函数之后的第几行设置断点
(gdb)print 变量名,打印变量的值,加上&为打印地址
(gdb)r,程序从main运行,并运行到端点结束
(gdb)finish,连续运行到当前函数返回为止
(gdb)info reg,查看所有寄存器的值
(gdb)x/4bt 地址,打印二进制下某地址的开始的四个字节
(gdb)x/4bx 地址,打印十六进制下某地址的值开始的四个字节
(gdb)p $寄存器名,查看特别寄存器的名称
(gdb)n,执行下一条语句,加数字可以执行接下来的多条语句
(gdb)s,进入函数单步调试
(gdb)si,汇编中单指令
(gdb)p 变量名,打印当前要查找变量名信息或者调用函数
(gdb)start,开始执行程序,停在main函数第一行语句前
(gdb)c,继续执行程序,直到下一个断点
(gdb)ir,查看当前寄存器的值,可以在后面加上寄存器的名称
display /ni $pc,n为行数,没有则输出整个程序的反汇编语言
disas 函数名,对函数反汇编
type 文件名,可以在命令行状态下打开文本文件
汇编:在debug模式中使用,需要先用mount来配置debug环境
e内存地址,可以向内存中写入数据
d 内存地址,可以查看指定的内存地址的值

汇编速查:
mov a,b,传送字或字节
movsx a,b,先符号拓展,再传送
movzx a,b,先领拓展,再传送
push a,把a压入栈
pop a,把a弹出栈
pusha,把ax,cx,dx,bx,sp,bp,si,di依次压入栈
popa,把di,si,bp,sp,bx,dx,cx,ax依次弹出栈
pushad,把eax,ecx,edx,ebx,esp,ebp,esi,edi依次压入栈
popad,把edi,esi,ebp,esp,ebx,edx,ecx,eax依次弹出栈
xchg a,b,将两个操作数交换位置
in a,b,输入,b(8位端口地址)的内容放到a中,地址b+1的内容放到ah中
out a,b,输出,将b寄存器中的内容输出给a的位置
LEA,装入有效地址. 例: LEA DX,string ;把偏移地址存到DX.
LDS,传送目标指针,把指针内容装入DS. 例: LDS SI,string;把段地址:偏移地址存到DS:SI.
LES,传送目标指针,把指针内容装入ES. 例: LES DI,string;把段地址:偏移地址存到ES:DI.
LFS,传送目标指针,把指针内容装入FS. 例: LFS DI,string;把段地址:偏移地址存到FS:DI.
LGS,传送目标指针,把指针内容装入GS. 例: LGS DI,string;把段地址:偏移地址存到GS:DI.
LSS,传送目标指针,把指针内容装入SS. 例: LSS DI,string;把段地址:偏移地址存到SS:DI.

汇编细查:
mov oprd1,oprd2,将一个源操作数送到目的操作数即2->1,1可以是寄存器、存储器、累加器;2可以是寄存器、存储器、累加器、立即数
db n,设定数据的字节数
push oprd,将指定的操作数送入栈顶,可以是寄存器或存储器
pop oprd,先弹出栈顶的数顶到oprd,再修改指针
xchg oprd1,oprd2,将两个操作数相互交换位置
xlat table,将待查表格table的一个字节内容送到al累加器
lahf,复制flag寄存器低八位到ah寄存器
sahf,将ah存到flag低八位
pushf,把标志寄存器内容保存到堆栈
popf,?
Lea oprd1,oprd2,将源操作数给出的有效地址传到指定的寄存器2->1
Lds oprd1,oprd2,从32位存储器2取出32位地址的指令,偏移地址放入16位寄存器1,段地址放入ds
Les oprd1,oprd2,从32位存储器2取出32位地址的指令,偏移地址放入16位寄存器1,段地址放入es
Add oprd1,oprd2,两数相加给1,1为寄存器或存储器,2为立即数、寄存器、存储器
adc oprd1,oprd2,带进位加法指令给1,1位寄存器或存储器,2为立即数、寄存器、存储器,再加上进位标志位,进位标志放在CF
inc oprd,对寄存器或存储器进行累加
AAA,对两个组合的十进制数相加计算的结果进行调整,产生一个为组合的十进制数放在AX中
DAA,对两个组合进制数相加的结果进行调整,调整结果放在AL中,进位标志放在CF
sub oprd1,oprd2,两个操作数的相减,即从1中减去2结果放在1中
sbb oprd1,oprd2,两个操作数的相减再减去cf进位标志位结果给1
dec oprd,对寄存器或存储器进行递减
neg oprd,对寄存器或存储器取补
cmp oprd1,oprd2,两数相减进行比较
aas,影响标志位CF和AF,对两个未组合十进制数相见后存于AL中的结果进行调整,产生一个未组合的十进制数存于AL中
das,对两个组合十进制数相减后存于AL中的结果进行调整,调整后产生一个组合的十进制数仍存于AL
mul oprd,将ax与oprd进行无符号相乘存于ax中

计算机系统——汇编语言基础相关推荐

  1. Intel汇编语言程序设计学习-第三章 汇编语言基础-上

    汇编语言基础 3.1  汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov  eax,5  ;5送EAX寄存器 add   ...

  2. 汇编语言基础--汇编操作指令概述

    本文是接续"汇编语言基础--机器级数据存储",主要介绍汇编指令的构造.寻址和指令主要分类. 操作指令 指令的基本要素:       在"计算机处理器(CPU)基础&quo ...

  3. 《汇编语言基础教程》 学习实录

    <汇编语言基础教程> 学习实录 第3章 算术运算指令 第4章 选择结构 第5章 迭代结构 第6章 逻辑运算指令.移位指令.循环移位指令和堆栈 书目:<Guide to assembl ...

  4. HLA高级汇编语言基础

    HLA高级汇编语言环境的搭建与设置 我的操作系统:WINDOWS7 需要下载的东西:MASM32:http://www.masm32.com/masmdl.htm  HLA:http://webste ...

  5. X86/X64汇编语言基础

    目录 一.基础介绍 汇编语言简介 80×86 计算机组织 80×86 的指令系统和寻址方式 汇编语言程序格式 汇编语言程序的运行 子程序结构 二.汇编实验 打印输出"Hello World! ...

  6. Linux操作系统汇编语言基础知识(图文代码)

    1.什么是汇编语言,它在计算机语言中的地位? 汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言 2.汇编语言与源程序.汇编程序.汇编的关系? 3.汇编语言的特点 \1) 汇编语 ...

  7. 汇编语言 | 基础知识

    文章目录 0x00 前言 0x01 为什么学习汇编语言 0x02 汇编语言的由来 0x03 机器语言和汇编语言 0x04 0和1构造万物 0x05 进制转换 0x06 进制运算 0x07 补码运算 0 ...

  8. 【CSAPP笔记】4. 汇编语言——基础知识

    程序的机器级表示 计算机能读懂是机器代码(machine code)-- 用字节序列编码的低级操作 -- 也就是0和1.编译器基于编程语言的规则.目标机器的指令集和操作系统的规则,经过一系列阶段产生机 ...

  9. 汇编语言基础入门知识

    学习汇编前你应该知道的知识   1.汇编需要什么工具和程序,到哪里下载?     目前阶段,汇编程序仅需要两个程序就够了.masm.exe,link.exe.  前者是编译程序,后者是链接程序.另外, ...

最新文章

  1. java instanceof运算符_Java instanceof 运算符的使用方法
  2. java8源代码_java8 源码解读
  3. 【程序员面试干货】资深面试官告诉你:测试工程师面试要注意什么?
  4. centos 6.5/redhat 6.5 网卡配置有问题
  5. 23-[模块]-logging
  6. 一个很烂的学生成绩管理系统
  7. 开源可视化网页抓取工具Portia 爬虫
  8. 2022年熔化焊接与热切割考试模拟100题及在线模拟考试
  9. 关于QQ互联的一些坑
  10. 【转】美团O2O供应链系统架构设计解析
  11. python---合并两个excel表格内容
  12. 快手打开后不显示画面_快手打开不显示图像怎么办
  13. 【CDOJ 1323】柱爷的下凡
  14. 神经网络和算法的关系,神经网络的算法有哪些
  15. dBSPL、dBu、dBV、dBm、dBVU、dBFS等等和分贝有关的名词解析
  16. 数据库oracle审计,Oracle数据库审计策略
  17. 3D建模有哪些外包渠道?
  18. Win7 64bits、VS2010、安装OpenSSL
  19. 将以逗号隔开string字符串,转为list
  20. 现代软件工程_团队项目_阿尔法阶段_阿里云服务器部署_2017.11.24

热门文章

  1. 无盘服务器架设之四:iPxe无盘超级应用实例
  2. 埃森哲荣膺“IDC商业分析服务提供商”领军者
  3. 上海擎标助力中国移动山东公司通过ISO22301业务连续性认证
  4. Visual Studio 2010 Service Pack 1 (SP1)正式版发布了
  5. mega盘要_[MEGA DEAL]支付您想要的:2018机器学习套件(99%折扣)
  6. 关于Vue的就地复用
  7. 800万商户都在抖音开通了企业号建立了私域流量新领地,你还在等什么
  8. java applet类开始博饼_中秋博饼demo
  9. POJ 3095 Linear Pachinko 笔记
  10. SASS Or SCSS