
汇编
Michael_Good
脚踏实地,不负时光!
展开
-
[GTEST] 笔记下使用过程遇到的事情
在写单测模块时,需要使用CPP进行编码。具体是为什么,还不太清楚。使用C进行写单测,会报错。原创 2025-03-04 19:44:22 · 128 阅读 · 0 评论 -
【操作系统】esp栈指针
需要注意的是,栈的清理是在函数返回之前进行的,以确保在函数返回后,栈上不再包含已经释放的局部变量或函数参数的数据。这样可以避免潜在的内存泄漏或栈溢出问题。在汇编语言中,栈指针(ESP)的移动通常用于在栈上分配和释放局部变量或函数参数的空间。当栈指针移动后,数据的清理是通过调整栈指针的位置来实现的。原创 2023-10-25 10:52:16 · 392 阅读 · 0 评论 -
【汇编语言】关于“段”的总结
物理地址 = 段地址 x 16 + 偏移地址。原创 2023-08-20 21:29:00 · 461 阅读 · 0 评论 -
【汇编语言】栈及栈操作的实现
1、push、pop 实质上是一种内存传送指令,可以在寄存器和内存之间传送数据,与mov指令不同的是,push和pop指令访问的内存单元的地址不是在指令中给出的,而是由SS:SP指出的;2、执行push和pop指令时,SP中的内容自动改变;原创 2023-08-20 21:12:51 · 1033 阅读 · 0 评论 -
【汇编语言】DS与数据段
5、mov, add, sub 都是具有两个操作对象的指令,访问内存中的数据段(对照:jmp是具有一个操作对象的指令,对应内存中的代码段)。1、字在内存中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中;2、用mov指令要访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中;4、在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应;原创 2023-08-20 20:32:34 · 330 阅读 · 0 评论 -
【汇编语言】使用DS和[address]实现字的传送
2、原理:8086设备中,内存地址由段地址和偏移地址组成(段地址:偏移地址);1、要求:CPU要读取一个内存单元时,必须先给出这个内存单元的地址;(2)偏移地址用[address] 形式直接给出;8086CPU可以一次性传送一个字(16位的数据)(1)使用DS寄存器存放要访问的数据的段地址;解决方案:使用DS和[address]配合。原创 2023-08-20 20:10:44 · 236 阅读 · 0 评论 -
【汇编语言】内存中字的存储
2、如:内存地址 20000D(4E20H)存放0、1两个单元,18D(0012H)存放2、3两个单元。2、原理:在1个字单元中,低地址单元存放低位字节,高地址单元存放的是高位字节。1、概念:由两个地址连续的内存单元组成,存放一个字型数据(16位)。问题1:16位的字存储在一个16位的寄存器中,是如何进行存储?问题2:16位的字在内存中需要2个连续的字节存储,如何存放?1、低位字节存放在低地址单元,高位字节存放在高地址单元;答案1:高8位存放高子节,低8位存放低字节;3、下图中相关描述。原创 2023-08-20 19:45:51 · 494 阅读 · 0 评论 -
【汇编语言】CS、IP寄存器
【代码】【汇编语言】CS、IP寄存器。原创 2023-08-20 19:13:17 · 1816 阅读 · 1 评论 -
【汇编语言】CS、IP与代码段
5、执行指令结果传输至寄存器AX,另外,将IP的值进行加3,目的是下次执行地址偏移3个字节, 然后继续重复该过程,直至结束。答:取决于程序员如何编码。如果程序员将CPU的CS:IP 指向内存单元中,则该内容即为指令。,定位到物理内存地址,在物理内存中获取执行指令,这里是 B8 23 01。2、CS地址左移动一位,与IP地址合成物理地址。这段数据究竟是一般数据?1、第一步,取地址,准备合成物理地址;4、寻找获得指令后后,将当前指令通过。传输至CPU的指令缓冲器,后续。问:内存中有数据如下,原创 2023-08-20 18:45:51 · 1363 阅读 · 0 评论 -
【汇编语言】6、Debug的使用
2、使用 Debug 程序可以查看CPU各种寄存器中的内容、内存的情况,并且在机器指令级跟踪程序的运行。5、用A命令以汇编指令的格式在内存中写入机器指令;4、用U命令将内存中的机器指令翻译成汇编指令;-e 段地址:偏移地址 数据1 数据2 …列出预设地址内存处的128个字节的内容;-d 段地址:偏移地址 结尾偏移地址。列出内存中指定地址范围内的内容;3、用E命令改变内存中的内容;列出内存中指定地址处的内容;6、用T命令执行机器指令;-d 段地址: 偏移地址。-e 段地址:偏移地址。- 空格-接受,继续;原创 2023-08-20 17:48:04 · 630 阅读 · 0 评论 -
【汇编】各指令集架构中,操作码定义
MOV:将数据从一个位置复制到另一个位置ADD:将两个数相加SUB:将两个数相减MUL:将两个数相乘DIV:将两个数相除AND:按位与操作OR:按位或操作XOR:按位异或操作CMP:比较两个数的大小JMP:无条件跳转JZ:当零标志位为真时跳转JNZ:当零标志位为假时跳转CALL:调用一个函数RET:从函数返回MOV:将数据从一个位置复制到另一个位置ADD:将两个数相加SUB:将两个数相减MUL:将两个数相乘DIV:将两个数相除。原创 2023-05-26 10:33:25 · 2416 阅读 · 0 评论