![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编与逆向工程
文章平均质量分 77
sesiria
这个作者很懒,什么都没留下…
展开
-
王爽 《汇编语言》 读书笔记 二 寄存器
第二章 寄存器原创 2017-08-19 16:28:34 · 393 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十 CALL和RET指令
第十章 CALL和RET指令call和ret都是转移指令,它们都修改IP,或同时修改CS和IP,常用于子程序的设计。10.1 ret 和 retfret用栈中的数据,修改IP的内容,从而实现近转移retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移ret指令1) (IP) = ((ss)*16 + (sp))2) (sp) = (sp)原创 2017-09-09 23:31:11 · 759 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十四 端口
第十四章 端口cpu中通过中线连接的设备出了各种存储器以外还有以下3种芯片。1)各种接口卡(比如,网卡,显卡)上的接口芯片,它们控制接口卡进行工作;2)主板上的接口芯片,cpu通过它们对部分外设进行访问。3)系统芯片,用来存储相关的系统信息,或进行相关的输入输出处理。这些芯片中的,都有一组可以由cpu读写的寄存器。1)都和cpu的总线相连(通过其所在的芯片)2)原创 2017-09-17 15:24:54 · 424 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十二 内中断
第十二章 内中断中断:cpu能接收到内部或外部的某种信息,cpu不再接着向下执行,而是转取处理这个特殊信息。12.1 内中断的产生cpu内部有下面情况发生将产生相应的中断信息。1)除法错误,比如,执行div指令产生的除法溢出 (中断码 0)2)单步执行 (1)3)执行into指令 (4)4)执行int指令 (int n)cpu通过中断类型码来识别中原创 2017-09-16 14:05:07 · 699 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 八 数据处理的两个基本问题
第八章 数据处理的两个基本问题1)处理的数据栈什么地方?2)要处理的数据有多长?定义一个描述符号:reg表示寄存器 sreg表示段寄存器reg:ax , bx, cx, dx, ah, al, bh, bl, ch, cl, dh, dl, sp, bp, si, di;sreg: ds, ss, cs, es8.1 bx, si, di 和bp1)只有这原创 2017-09-02 16:04:18 · 399 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 九 转移指令的原理
第九章 转移指令的原理可以修改,或同时修改CS和IP的指令统称为转移指令。只修改IP jmp ax同时修改CS和IP jmp 1000:0无条件转移指令jmp条件转移指令循环指令过程中断9.1 操作符 offset由编译器处理的符号 取得标号的偏移地址start : mov ax, offset starts: m原创 2017-09-03 14:15:38 · 341 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十七
第十七章 使用BIOS进行键盘输入和磁盘读写17.1 int9中断例程对键盘输入的处理一般的键盘输入,在cpu执行完int9中断例程以后,欧放到了键盘缓冲区中。 键盘缓冲区有16个字单元,可以存储15个按键的扫描码和对应的ASCII码。参照书P300页 关于键盘缓冲区的存储利用了队列或者环形队列数据结构。17.2 使用int16h中断例程读取键盘缓冲原创 2017-09-24 11:06:58 · 862 阅读 · 0 评论 -
实践: 《编码:隐匿在计算机软硬件背后的语言》 -- 实现一个简单的8位CPU的虚拟机
最近在看Charles Petzold的《编码》这本书。书上用生动的例子从导线灯泡继电器开关自己搭建了一个简单的8位计算机。并且能实现加法,减法,条件判断,调整的基本功能。这里博主为了巩固对书上知识的理解,用C++模拟书上的方法自己实现了一个8位的CPU虚拟机,并且支持内存的输入输出,和机器码。能自己编码运行程序。Project Site:https://github.co原创 2018-01-24 13:45:21 · 1336 阅读 · 2 评论 -
王爽 《汇编语言》 读书笔记 十五 外中断
第十五章 外中断体现了cpu的I/O能力。1)cpu如何得知外设输入了?2)cpu如何得到外设的输入?15.1 接口芯片和端口cpu通过端口和外部设备进行联系15.2 外中断信息外部设备通过外中断来通知cpu 引发中断过程,处理外设的输入。外中断源:1. 可屏蔽中断可屏蔽中断是cpu可以不响应的外中断。 例如IF =1 则cpu会响应原创 2017-09-17 17:21:20 · 369 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十三 int指令
第十三章 int指令int引发的属于内中断13.1 int指令int n , n为中断类型码。1)取得中断类型码2)标志寄存器入栈,IF=0, TF=0;3)CS,IP 入栈4)(IP)=(n*4) (CS) = (n*4 + 2)中断处理程序也称为中断例程13.2 编写供应用程序调用的中断例程问题,编写,安装中断7ch的中断例程。功原创 2017-09-17 09:52:42 · 598 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 一 基础知识
第一章 基础知识1.1~1.0 小结1) 汇编指令是机器指令的助记符,同机器指令一一对应。2)每种cpu都有自己的汇编指令集(机器语言指令集)3)cpu可以直接使用的信息中存储器中存放4)中存储器中指令和数据没有任何区别,都是二进制信息5)存储单元从0开始顺序编号6)一个存储单元可以存储8个bit,即8位2进制数原创 2017-08-19 13:21:19 · 392 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
第三章 寄存器(内存访问)3.1 内存中字的存储cpu中, 用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。字单元:即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。将起始地址为N的字单元简称为N地址字单元。3.2 DS和[address]DS用原创 2017-08-20 19:14:44 · 489 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 四 第一个程序
第四章 第一个程序4.1 一个源程序从写出到执行到过程1) 编写汇编源程序2)对源程序进行编译连接 可执行文件包含两部分内容。 程序(从源程序中对编译指令翻译过来对机器码)和数据(源程序中定义对数据) 相关对描述信息(比如,程序有多大,要占用多少内存空间等)3)执行可执行文件中对程序。 (将机器码和数据载入内存,并进行相关初始原创 2017-08-26 13:19:08 · 340 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 五 [BX]和loop指令
第五章 [BX]和loop指令1.[bx]和内存单元描述要完整描述一个内存单元需要 1)内存单元的地址; 2)内存单元的长度(类型)bx也可以表示一个内存单元,偏移地址存在BX中mov ax, [bx]2. loop循环指令3. 我们定义的描述性符号 ()(ax) 表示ax中的内容(al) 表示al中的内容((ds)*16 + (bx)原创 2017-08-26 20:39:30 · 630 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 六 包含多个段的程序
第六章 包含多个段段程序程序所需要空间有两种方法,一是加载程序时为程序分配,二是在运行时向系统申请(暂不讨论)1)在一个段中存放数据,代码,栈,段情况2)将数据,代码,栈放入不同段段中。6.1 在代码段中使用数据累加一下8个数据 存入ax中0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h原创 2017-08-27 14:50:18 · 319 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 七 更灵活段定位内存地址段方法
本章节主要应用a. 寻址方式[bx + data], [bx +si], [bx + si +idata]b. 二重循环处理的问题c. 栈的应用d. 大小写转换的问题e. and, or指令原创 2017-08-27 20:31:00 · 457 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十六 直接定址表
第十六章 直接定址表16.1 描述了单元长度的标号 使用一种标号不但表示内存单元的地址,还表示了内存单元的长度,即表示了内存单元的长度,即表示次数标号处的单元是一个字单元还是一个字节单元,还是双字单元。assume cs:codecode segment a db 1, 2, 3, 4, 5, 6, 7, 8 b dw 0start: mov si, 0原创 2017-09-23 11:55:32 · 614 阅读 · 0 评论 -
在MacOSX的Vmare Fusion中添加虚拟软驱和制作虚拟软盘
参考这篇文章,自己在Mac OSX中制作了一个虚拟软盘。http://blog.csdn.net/apollon_krj/article/details/720269441. 首先要关闭虚拟机的WindowsXP,然后打开VmwareFusion的虚拟机设置选择Add Device然后选择Floppy- Add这里要选择一个flp格式的磁盘镜原创 2017-09-24 13:17:30 · 933 阅读 · 0 评论 -
王爽 《汇编语言》 读书笔记 十一 标志寄存器
第十一章 标志寄存器标志寄存器1)用来存储相关指令的某些执行结果2)用来为cpu执行的相关指令提供行为依据3)用来控制cpu的相关工作方式标志寄存器flag存储程序状态字(PSW)8086点flag寄存器各位有不同的含义CF,PF,AF,ZF,SF,TF,IF,DF,OF11.1 ZF标志flag的第六位是ZF,0标志位。原创 2017-09-10 20:03:32 · 842 阅读 · 0 评论