
汇编语言(第3版)王爽著
文章平均质量分 91
第一次写读书笔记
追逐~chase
这个作者很懒,什么都没留下…
展开
-
第17章 使用BIOS进行键盘输入和磁盘读写
我参考书中本小节的分析,写了上述代码。调试时出错了,分析是显示出现了问题,但由于本书后半段写显示功能比较多,大致看了没问题,就在其它地方找问题。找的都烦了找不出问题,没办法只能单步调试,最后发现确实是显示出了问题,保存行号的dh没有恢复。,int 9中断例程向键盘缓冲区中写入,int 16h中断例程从缓冲区中读出。书中例子是在软盘上操作的,软盘早就淘汰了,本来我想拿U盘来测试,但是现在BIOS被UEFI代替了,没法操作,等升级了笔记本,装上虚拟机再来测试本小节,还有后面的实验17、课程设计2和综合研究。原创 2025-03-17 16:57:34 · 568 阅读 · 0 评论 -
第16章 直接定址表
这个实验的重点要关注,中断例程安装完成后,中断例程调用其它子程序时,地址的设置。在安装程序中,中断例程不会执行,安装程序中所有对内存访问的地址基础,是安装程序所在的地址空间,这个空间是DOS系统分配的;安装完成后,中断例程对内存访问的地址基础,是安装的位置。在其它段中,我们也可以使用数据标号来描述存储数据的单元的地址和长度。使用这种包含单元长度的标号,可以使我们以简洁的形式访问内存中的数据。(代码内不包含,测试部分,有兴趣的安装完中断例程,自己写个单独的测试文件,我已测试通过)在code段中使用的标号。原创 2025-03-06 21:46:49 · 718 阅读 · 0 评论 -
第15章 外中断
CPU在计算机系统中,除了能够执行指令,原创 2025-02-28 14:58:45 · 620 阅读 · 0 评论 -
第14章 端口
主板上的接口芯片其它芯片每个端口在地址空间中都有一个地址。以上是端口的由来。原创 2025-02-24 14:09:31 · 762 阅读 · 0 评论 -
第13章 int指令
中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。原创 2025-02-22 16:16:26 · 812 阅读 · 0 评论 -
第12章 内中断
任何一个通用的CPU,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。原创 2025-02-14 21:34:28 · 571 阅读 · 0 评论 -
第11章 标志寄存器
flag寄存器和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。原创 2025-02-07 16:19:38 · 840 阅读 · 0 评论 -
第10章 CALL 和 RET 指令
call和ret指令都是转移指令,它们都。原创 2025-02-03 21:03:20 · 603 阅读 · 0 评论 -
第9章 转移指令的原理
概括的讲,转移指令就是可以控制CPU执行内存中的某处代码的指令。原创 2024-10-21 20:35:21 · 1031 阅读 · 0 评论 -
第8章 数据处理的两个基本问题
不过通过写这个程序,确实让我学会了结构化的访问数据,操作数据,对循环嵌套,加深了理解,以前简单的嵌套能写,复杂点的要搞半天才能解决,考虑问题没思路,现在感觉抓住结构化这点,至少让我有思路了。学了这一小节,我知道了,以前我写java程序时,数据都是瞎定义,只会根据是字符、布尔值,还是数字、数字长度、数字是不是浮点型,这些表面的东西来定义,或者说复杂的结构化的数据考虑,已经被水平更高的人规划好了,我只需要在别人框架下,写点增删改查。它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。原创 2024-10-02 19:23:58 · 1699 阅读 · 0 评论 -
第7章 更灵活的定位内存地址的方法
计算机中,所有信息都是二进制,而人能理解的信息是已经具有约定意义的字符。把人能理解的字符存储到计算机中,就需要对其进行编码,将其转化为二进制信息进行存储。而计算机要将这些存储的信息再显示给我们看,就要再对其进行解码。只要编码和解码采用同样的规则,我们就可以将人能理解的信息存入到计算机,再从计算机中取出。 在汇编程序中,,编译器将把它们转化为相对应的ASCII码。‘…’ 中几个字符就分配几个字节的空间。比如’unix’系统就分配4个字节。 我们也可以 在指令中以字符的形式给出数据。例如:m原创 2024-09-27 18:01:36 · 806 阅读 · 0 评论 -
第6章 包含多个段的程序
在操作系统的环境中,,因为操作系统不会让一个程序所用的空间和其他程序以及系统自己的空间相冲突。在操作系统允许的情况下,程序可以取得任意容量的空间。原创 2024-09-26 14:55:19 · 1590 阅读 · 0 评论 -
第5章 [BX]和loop指令
我不是天才原创 2024-09-24 15:12:49 · 1018 阅读 · 0 评论 -
第4章 第一个程序
弹出的黑框是windows的shell,是Command程序,也是DOS的命令解释器。end是一个汇编程序的结束标记,编译器在编译过程中,如果碰到了伪指令end,就结束对源程序的编译。这章实验很简单,查看PSP的内容直接用debug的D命令,查看之后发现,我现在写过的仅有的两个汇编程序,运行时的PSP内容是相同的。汇编源程序中,除了汇编指令和伪指令,还有一些标号,比如“codesg”,一个标号指代一个地址,这个段名称最终将被编译、连接程序处理为一个段的 段地址。程序在编译时被编译器发现的错误是语法错误。原创 2024-09-20 16:28:42 · 724 阅读 · 0 评论 -
第3章 寄存器(内存访问)
push、pop实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据,与mov指令不同的是,push和pop指令访问的内存单元的地址不是在指令中给出,而是由SS:SP指出的,同时push和pop指令还要改变SP中的内容。任意时刻,SS和SP指向栈顶元素,当栈为空时,栈中没有元素,也就不存在栈顶元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元偏移地址为栈最底部的字单元的偏移地址+2。一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么都不是。原创 2024-09-12 19:29:22 · 729 阅读 · 0 评论 -
第2章 寄存器
程序员通过改变各种寄存器中的内容实现对CPU的控制。原创 2024-09-07 17:58:28 · 1073 阅读 · 0 评论 -
第1章 基础知识
什么是内存地址空间呢?举例来讲,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻址的内存单元就构成这个CPU的内存地址空间。原创 2024-09-06 19:54:29 · 1792 阅读 · 0 评论