零零散散学汇编
lulipeng_cpp
计算机迷
展开
-
第一篇 搭建开发环境
学习汇编对于了解计算机结构、优化代码的性能都是有很多好处的。所以,如果你对硬件很感兴趣,学好汇编是基本功;如果你对编程有兴趣,学好汇编可以使你的代码更加高效。 以下内容纯属一个学习X86(主要 是8086)汇编的菜鸟的一点点学习经历,可能是代码、指令的思考,也可能是其他的东西。高手可以直接无视了! 这里我所要介绍的是非常基本的开发环境。cmd.exe、link.exe、原创 2012-11-05 13:05:06 · 838 阅读 · 0 评论 -
第十篇 jmp $
在汇编中 $ 的作用是取 $ 所在处的地址。所以jmp $就是一个死循环了。除非有中断,会转去执行中断服务程序。但要注意的是:返回的地址还是jmp $,而不是其下一条语句。 因为,在jmp $执行是会把jmp $语句所在的地址装到程序计数器PC中。中断来临后PC被压栈。中断服务程序返回后,从栈中取回PC的值并开始执行。此时,PC的值是jmp $的地址!原创 2013-01-06 16:43:20 · 4221 阅读 · 1 评论 -
第九篇 单步中断
单步中断在学习基本的8086指令和程序设计时基本很少被提及,以至于很多人对其都不太了解。本博文简单介绍少单步中断的执行过程以及用途。 调用单步中断一般是设置标志寄存器的内容,使得TF=1,则会在下一条指令执行完成后进入单步中断服务程序。单步中断的服务程序与其他中断服务程序没有区别。程序员可以设置其中想写的内容。如果TF=1一直没有被清零,那么以后一直会单步执行程序,也就是说每执原创 2013-01-02 12:33:02 · 2761 阅读 · 0 评论 -
第八篇 TSR程序设计初探
这篇博文介绍一个简单的TSR程序设计的例子。 一、TSR是什么TSR是内存驻留程序(Terminate and Stay Resident Program)的简称。内存驻留程序是指这样一种程序,TA在执行结束后,将一部分留在内存中,受到操作系统的保护,可由外界激活。一般来说,TSR都会和DOS或BIOS中断相联系。 二、本篇博文介绍的TSR的设计思路是什么设计的功能原创 2012-11-30 00:36:30 · 3253 阅读 · 0 评论 -
第七篇 使用8253计数器
本篇博文主要介绍如何利用8253计数器计时。8253计数器每秒大概计数18次。每计数一次就会向CPU发出中断请求。也即每55ms就会发一次中断请求。CPU响应中断,调用的是int 1ch。以下代码的作用时利用int 1ch中断计时60秒,在屏幕上显示00至59,然后程序自动退出。 一、代码initint equ 1chdata segment addr dw ?,?原创 2012-11-14 20:19:37 · 1761 阅读 · 0 评论 -
第六篇 键盘中断与应用程序读取键盘缓冲区
这篇博文主要介绍在X86下键盘的中断过程,以及应用程序如何利用中断读取键盘缓冲区内容。 一、撰写该篇博文的背景介绍在我们全屏看视频时,按下Esc键,播放器还原或者最小化;在利用其他软件的时候,我们会发现,设置可以设置打开或关闭程序的快捷方式......应用程序为什么可以根据键盘的指示工作?又是如何工作的呢? 二、对于键盘中断的介绍当我们在按下按键时,键盘会把按键的扫原创 2012-11-13 15:31:33 · 6647 阅读 · 0 评论 -
第五篇 直接面向系统资源的0号中断处理
学习汇编的一个重要目的就是获得面对底层编程的经验。这也就是说有的时候我们这些编程者应该绕开操作系统,直接面向硬件要资源。当然,这在某种程度上是不安全的。但请别忘了,我们在写汇编。 一、简单介绍下博文的目标这篇博文主要是改写0号中断(除法溢出)的入口地址,使之执行编程者自己编写的中断处理程序。系统提供的0号中断服务程序做法是打印divide overflow!,然后返回。新的原创 2012-11-09 11:29:40 · 1829 阅读 · 0 评论 -
第四篇 操作80*25彩色字符显示缓冲区
这篇博文将要简单介绍下,如何在屏幕上显示字符的各种效果。注:博文中的图片来自王爽《汇编语言》,代码出自博主。一:要求二、对显示缓冲区的简单介绍三、对字符属性字节的简单介绍四、一个简单的例子,有助于理解五、解决该题1、按照题意,只要想缓冲区一个接一个地写入字符及其属性就可以在屏幕上显示了。代码:data segment characters db原创 2012-11-08 14:24:39 · 4639 阅读 · 2 评论 -
第三篇 子程序调用与返回的一点小问题
这篇博文主要是为了简单介绍下,子程序调用的两种情况,调用在定义前和定义在调用前。一、调用在定义前1、近调用code segment assume cs:codestart: call f mov ah,4ch int 21hf proc mov ax,0ffffh retf endpcode ends end start2、远调用code segme原创 2012-11-07 23:40:36 · 2583 阅读 · 0 评论 -
第二篇 溢出标志 CF与OF
在汇编学习中,个人感觉CF与OF这两个溢出标志还是有点难理解的。笔者也还是一知半解,若有错误之处,请指正! 一、学习CF与OF,要始终牢记一点。CF是无符号数溢出标志,OF是有符号数溢出标志。通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1,则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=原创 2012-11-07 09:16:32 · 20294 阅读 · 10 评论 -
第十一篇 BCD码调整
无论是X86汇编还是MCS-51的指令集中都会有BCD码调整指令。本博文将浅谈下BCD码调整的相关情况。 一、BCD码是十进制数在计算机中的表现形式。 我们一直都说计算机只能表示0、1二进制,这毫无疑问是正确的。但人对十进制数较为熟悉,为了迎合人的方便,8421BCD码用来在计算机中表示十进制数。当然了,BCD码也是用0、1二进制来表示的。所以,需要注意理解的原创 2013-05-11 18:27:59 · 3560 阅读 · 1 评论