摘要: (5) 一开始写的是两个循环的,结果发现C段里面没相加结果,反汇编发现,第二个循环部分的代码并没有执行,怎么改都不行,数量不多,就换成了直接一个一个入栈,结果那部分代码也不执行,我弄了一个多小时也找不出问题ORZ 后来又换了一种方法,才可以。 不可行1号:(mov ax,4c00h int21h 后 阅读全文
posted @ 2018-12-31 00:21 花逢君 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 1. 寄存器:是单独的硬件,分高8位(H) 低8位(L) (1) AX,BX,(数据 寄存器,寄存器 寄存器),CX(循环次数) (2) CS:IP 段地址 偏移地址 程序指令存放内存单元地址 (3) DS 段地址 程序中数据真正执行的内存单元地址 (4) SS:SP 栈段地址 栈顶偏移地址 2. 阅读全文
posted @ 2018-12-24 22:33 花逢君 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1. 机器语言依赖硬件,是机器指令的集合,机器可以直接识别。机器码都是0和1组成,不易查错。 汇编语言是给程序员看的,机器不能直接识别,需要由编译器转成机器语言。 两者都不可移植,效率差不多。 2. 冯.诺依曼体系: 存储器:存储程序(数据)、CPU、I/O设备、运算器、控制器。计算机运行过程中,把 阅读全文
posted @ 2018-12-23 22:00 花逢君 阅读(120) 评论(0) 推荐(0) 编辑
摘要: (1) 源代码: Debug调试: 运行: 修改后: (2) 源代码: Debug调试: g 命令和 d 命令,确实将0~63传送此段内存区域 (3) 源代码: g 命令和d 命令,结果是对的(内存中的和上面反汇编出来的一样) (t命令调试 只截图了部分,太多了……) 分析: 1.每一条指令都有对应 阅读全文
posted @ 2018-12-15 15:46 花逢君 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 练习1是用MASM做的,一开始edit没办法打开,但是MASM练习2做不了,需要注册 结果为36(这个没法截图,按任意键就退出了) 改后的: 结果变为27 (3) 1. Cx =0016 , ds = 0760 , cs = 0070 = ds + 10H 2.用d命令查看 的确如此 反汇编 P指令 阅读全文
posted @ 2018-12-12 21:12 花逢君 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 一开始没注意把ffff改成0021,第二次改了,两次结果对比了一下,发现: 1. 不改ffff不影响栈的内存单元地址,DS是数据段地址,SS是栈段地址,两者是独立的。 2. SP也不受影响,SP代表栈顶,只和存入数据的多少有关,存入时SP=SP 2 3. 内存单元地址我一开始没看运行结果的SP,是直 阅读全文
posted @ 2018-12-02 16:48 花逢君 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一开始弄不明白为什么每一条的偏移地址有时候是3有时候是2,后来明白了指令算一个,寄存器算一个,值算一个,两个寄存器只算一个。 第一次没逐条编译直接崩溃了,发现是个死循环。 第二次没有给CS和IP赋值,导致ax的值没有变化,CS和IP的值也不对。 第三次对了,然后2的8次方就是16进制里面的0100. 阅读全文
posted @ 2018-11-20 21:44 花逢君 阅读(194) 评论(2) 推荐(0) 编辑
摘要: ``` include using namespace std; int main(){ ios_base::fmtflags original_flags=cout.flags();//1 保存现在的格式化参数设置,以便将来恢复这些设置; cout include using namespace 阅读全文
posted @ 2018-06-20 23:57 花逢君 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 这个还没有做出来,晚点再看看第八章试试。 阅读全文
posted @ 2018-06-07 23:55 花逢君 阅读(114) 评论(2) 推荐(0) 编辑
摘要: ``` include include include using namespace std; // 函数声明 void output1(vector &); void output2(vector &); int main() { vectorlikes, dislikes; // 创建vect 阅读全文
posted @ 2018-05-23 22:04 花逢君 阅读(111) 评论(0) 推荐(0) 编辑