汇编基础
文章平均质量分 92
Airths
Thinking Coding Sharing
展开
-
8086 汇编(十二)
目录用 C语言 写一个 Objective-C 的数组对象(链式存储结构)注意用 C语言 写一个 Objective-C 的数组对象(链式存储结构)分析 Objective-C 中 NSMutableArray 的属性与方法,规划线性表对象1.属性方面:容量(capacity)、长度(length)、指向存储线性表元素的堆内存的指针(value)2.方法方面:创建线性表、销毁线性表、清空线性表、获取线性表的属性(capacity、length)、对线性表的增、删、改、查、删除特定值,打印线性表原创 2020-12-13 22:48:36 · 621 阅读 · 0 评论 -
8086 汇编(十一)
目录C 语言的条件编译(Conditional Compile)Objective-C 中的 __bridge、__bridge_retained、__bridge_transfer初识 LLDBHCGLinearList 封装LLDB 内存分析 与 逆向初步NSMutableArray 扩容分析HCGLinearList 扩容C 语言的条件编译(Conditional Compile)一般编译器的预编译指令,分为以下4类:文件包含:例如 #include,是一种最为常见的预处理,用于文件的引用原创 2020-12-13 22:47:04 · 625 阅读 · 0 评论 -
8086 汇编(十)
目录cmp指令、jne指令 与 flags寄存器cmp指令、jne指令 与 flags寄存器flags寄存器(标记寄存器):CPU 中专门用于存储 逻辑判断 结果的寄存器。不同型号的 CPU,flags寄存器 的位数可能不同(8bit、16bit、32bit、64bit),每种型号的 CPU 都会提供一张 结果状态表,用于说明 flags寄存器 每个bit 所代表的含义。cmp(compare)指令:用于比较两个操作数的大小,并将结果状态记录到 flags寄存器 中。cmp指令 通过对两个操作数做减原创 2020-12-13 22:45:17 · 939 阅读 · 0 评论 -
8086 汇编(九)
目录函数的局部变量函数调用函数 & 现场保护注意函数的局部变量定义高级语言函数如下int SunFunc(int a, int b){ int c = 1; int d = 2; return a + b + c + d; }则调用函数 SunFunc 的汇编代码为函数调用函数 & 现场保护注意bp + 是取参数,取形参函数内部取参数,是bp指针+,函数内部取局部变量,是bp指针-这里只是打个比方,具体分配多少个字节作为局部变量的内原创 2020-12-13 22:43:50 · 771 阅读 · 1 评论 -
8086 汇编(八)
目录call指令 和 ret指令call指令 和 ret指令call指令:将 call指令 的下一条指令的偏移地址入栈跳转到定位的地址执行指令ret 指令:将栈顶的值 pop 给 IP寄存器call指令 和 ret指令 结合起来 ,一般用于函数调用; call指令格式:; call 标号 或者 call 物理地址(地址偏移量); 标号在编译器编译后,也会变成地址偏移量; 实际上 call使用的是 cs:标号 ; xcode演示部分记录下来原创 2020-12-13 22:41:41 · 598 阅读 · 0 评论 -
8086 汇编(七)
目录loop 指令loop 指令loop指令 和 cx寄存器 配合使用,用于执行循环操作,类似高级语言的for、while、do-while高级语言的 for、while、do-while 底层大部分是通过 loop指令 来实现的(小部分是通过跳转来实现的)使用格式 mov cx, 循环次数标号: 循环执行的程序代码(可多行) loop 标号loop指令 ...原创 2020-12-13 22:40:13 · 439 阅读 · 0 评论 -
8086 汇编(六)
目录栈Push操作Pop操作空栈栈顶超界push 和 pop 汇编指令的格式栈段段总结(代码段,数据段,栈段)练习注意栈栈:是一种具有特殊的访问方式的存储空间(先进后出 First In Last Out,FILO)8086会将CS作为代码段的段地址,将CS:IP指向的指令作为下一条需要取出执行的指令8086会将DS作为数据段的段地址,mov ax,[address]就是取出DS:[a...原创 2020-12-13 22:38:36 · 902 阅读 · 0 评论 -
8086 汇编(五)
目录编写一个完整的汇编语言伪指令(assume,segment,ends,end)退出汇编程序中断DOS系统功能调用emu8086常用快捷键编写一个完整的汇编语言汇编语言由2类指令组成:1.汇编指令 :有真实对应的机器指令,编译时可以被编译为机器指令,最终被CPU执行,如 mov、add、sub 等2.伪指令:没有真实对应的机器指令,由编译器解析,最终不被CPU执行,如 assume、...原创 2020-12-13 22:36:54 · 551 阅读 · 0 评论 -
8086 汇编(四)
目录DS 和 [address]字型数据的传递(2个字节)大小端练习mov 指令add 和 sub 指令注意DS 和 [address]CPU要读写一个内存单元时,必须要先给出这个内存单元的地址。在8086中,内存地址由段地址和偏移地址组成8086中有一个DS段寄存器,通常用来存放要访问数据的段地址8086不支持将数据直接送入段寄存器(CS、DS、SS、ES),即 mov ds, 100...原创 2020-12-13 22:34:50 · 888 阅读 · 0 评论 -
8086 汇编(三)
目录8086的寻址方式段地址和偏移地址有多种组合内存分段管理段寄存器代码段CS和IP指令的执行过程指令和数据jmp指令jmp指令练习代码段8086的寻址方式CPU访问内存单元时,要给出内存单元的地址,所有的内存单元都有唯一的地址,叫做物理地址8086有20根地址总线,可以传送20位的地址,具有1M(2^20)的寻址能力但是同时,8086又是16位结构的CPU,它内部能够一次性处理、传输、...原创 2020-12-13 22:31:03 · 628 阅读 · 0 评论 -
8086 汇编(二)
目录总线概述地址总线数据总线控制总线总线练习内存寄存器通用寄存器字和字节注意总线概述每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互总线:一根根导线的集合总线的分类地址总线数据总线控制总线微型计算机基本结构举个例子地址总线地址总线的宽度决定了CPU的寻址能力8086的地址总线宽度是20,所以其寻址能力是1M(2^2...原创 2020-12-13 21:28:51 · 1378 阅读 · 0 评论 -
8086 汇编(一)
目录编程语言的发展机器语言汇编语言(assembly language)高级语言代码在终端设备上的转换过程汇编语言的特点汇编语言的用途汇编语言的种类几个必要的常识注意编程语言的发展机器语言由0和1组成的机器指令如:0101 0001 1101 0110汇编语言(assembly language)使用符号代替机器语言,因此也称为符号语言如:mov ax, bx高级语言C | C++ | Java | C# | Objective-C | Swift,更加接近人类的自然语言如:i原创 2020-12-13 21:25:51 · 658 阅读 · 0 评论