汇编语言学习
汇编语言学习
poetliu
这个作者很懒,什么都没留下…
展开
-
汇编语言学习第十四章-端口
本博文系列参考自>第三版,作者:王爽各种存储器都通过地址总线,数据总线以及控制总线与CPU相连。CPU对这些各种存储器组成的存储单元进行统一编址,统一寻址。除了各种存储器和CPU相连之外,还有以下几种芯片和CPU相连:(1)各种接口卡(比如网卡,显卡)上的芯片,它们控制接口卡工作 (2)主板上的接口芯片,CPU通过它们对部分外设进行访问 (原创 2016-05-03 13:29:04 · 4857 阅读 · 0 评论 -
汇编语言第十三章-int中断
本博文系列参考自>第三版,作者:王爽本博文将继续介绍另外一种内中断类型,int中断。13.1 int中断int指令格式为:int n,其中n为中断类型码。int n中断过程如下:取中断类型码n标志寄存器入栈,TF=0,IF=0CS,IP入栈(CS)=(n*4),(IP)=(n*4+2) 上面的代码段运行后将在屏幕中间显示一个’!’,然后再原创 2016-05-02 21:54:13 · 7710 阅读 · 1 评论 -
汇编语言学习第十二章-内中断
本博文系列参考自>第三版,作者:王爽当CPU执行完当前的任务的时候,收到来CPU外部或者内部发来的一种信息,转而不继续执行当前信息,而是立即对外部或者内部的信息进行处理,这样一种来自CPU外部或者内部的信息称为中断信息。中断的意思是指不再继续当前的任务执行下去,而是转而执行外部的或者内部的这个特殊信息。中断信息可以来自CPU内部或者CPU外部,即内中断或外中断。本文主要原创 2016-04-29 17:00:44 · 3842 阅读 · 0 评论 -
汇编语言学习第十一章-标志寄存器
本博文系列参考自>第三版,作者:王爽8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。除了前面介绍的寄存器。本博文将介绍最后一个寄存器,标志寄存器。不同于之前的寄存器,标志寄存器是按位起作用的。其每一位都有特殊的含义。8086标志寄存器的结构如下图所示:标志寄存器的1,3,5,12,13,14,15都没有特殊含义。其0,2,4原创 2016-04-28 13:44:29 · 2061 阅读 · 0 评论 -
汇编语言学习第十章-CALL和RET指令
本博文系列参考自>第三版,作者:王爽call与ret都是转移指令,它们可以改变IP值,或者同时改变CS与IP的值,往往在程序中使用它们进行子程序模块的设计。10.1 ret和retfret用栈的数据修改IP的内容,实现近转移retf用栈中的数据修改CS与IP的内容,实现远转移ret执行步骤:(1):(IP)=((SS)*16+SP)(2原创 2016-04-27 21:58:08 · 31022 阅读 · 1 评论 -
汇编语言学习第九章-转移指令的原理
本博文系列参考自>第三版,作者:王爽可以修改IP寄存器的值,或者同时修改CS与IP的值的指令称为转移指令。转移指令的功能就是使得CPU执行内存中某段特定的指令或程序。8086CPU的转移行为分为如下几类;1.只改变IP值,称为段内转移。比如 jmp ax;段内转移又分为短转移和近转移。短转移IP的修改范围为-128~127,近转移IP的修改范围为-32768~32767.原创 2016-04-26 20:41:34 · 4797 阅读 · 0 评论 -
汇编语言学习第八章-数据处理的两个基本问题
本博文系列参考自>第三版,作者:王爽 计算机CPU进行数据处理包括两个基本的问题:1.数据在何处? 2.数据有多大? 本章作为一个前面内容的总结性章节,主要来说明这两个问题。我们定义两个符号reg和sreg。其中reg为寄存器,sreg为段寄存器 reg包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,原创 2016-04-25 17:36:49 · 3583 阅读 · 0 评论 -
汇编语言学习第七章-更灵活的定位内存地址的方法
本博文系列参考自>第三版,作者:王爽前面已经通过类似[0]和[bx]的方法进行了内存定位了。本章将涉及更多内存地址定位和编程的方法。7.1 and 和 or 指令(1) and指令,逻辑按位与指令例如:mov al,01100011Band al,00111011B执行后 al=00100011B and指令可以用来将某个数的位置为零。比如我们要原创 2016-04-24 13:13:34 · 2999 阅读 · 0 评论 -
汇编语言学习第六章-包含多个段的程序
本博文系列参考自>第三版,作者:王爽在前面的介绍的程序中只有一个代码段。那么如果我们需要将代码,数据分别存储在不同的内存空间应该怎么办呢?我们知道我们不可能随便使用任何一段内存空间,因为我们这段内存地址空间可能存储着非常重要的内容。其实,这只是我们考虑的太多啦,一旦我们将程序载入内存后,操作系统为我们分配的用于程序运行的内存空间都是安全的,绝对不会与其他程序的内存空间相重叠的。往往原创 2016-04-22 14:34:04 · 1849 阅读 · 0 评论 -
汇编语言学习第五章-[BX]和loop指令
本博文系列参考自>第三版,作者:王爽1.[bx]和内存单元的描述[bx]与我们前面见过的[0]类似,mov ax,[0] 的意思是将内存地址为DS:0的两字节内容存入ax中。其中[0]中的0代表的是偏移地址。类似的,我们有 mov al,[0]的意思是将内存地址为DS:0的单字节内容存入al中。那么我们可以大胆的推断mov ax,[bx]代表的是将偏移地址为bx寄存器中的值的内原创 2016-04-20 13:55:47 · 3591 阅读 · 0 评论 -
汇编语言学习第四章-第一个程序
本博文系列参考自>第三版,作者:王爽前面的几章中我们断断续续的学习了一些指令,但是从来没有完整的通过汇编语言编写一个可执行文件即.exe文件。从本章开始我们将开始使用汇编语言并通过编译器编译链接一个完整的可执行文件。4.1 一个源程序从写出到执行的过程如下图所示,为一个完整的汇编程序到执行的过程:上图的过程可以总结成以下几个步骤:(1) 根据汇编语言语法规则原创 2016-04-19 16:00:43 · 2616 阅读 · 2 评论 -
汇编语言学习第三章-寄存器(内存访问)
本博文系列参考自>第三版,作者:王爽本章将紧接着上一章从内存访问的角度讲解寄存器。3.1 内存中字的存储 一个字的大小为两个字节,8086CPU一个寄存器的大小为两个字节,所以使用8086CPU的寄存器存储一个字单元的时候,高字节寄存器存储字的高位字节,低字节寄存器存储字的低位字节。类似的,我们在用内存存储一个字的时候,高内存单元存储字的高字节,低内原创 2016-04-18 10:49:36 · 2227 阅读 · 0 评论 -
汇编语言学习-Dos下的调试工具debug的使用教程
本博文系列参考自>第三版,作者:王爽Dubug是dos,windows下提供的调试工具,使用该工具,可以查看和修改寄存器,内存的内容。同时可以在机器码级别跟踪程序源码的运行。1.常用的debug功能(1)用Debug的R命令查看、改变CPU寄存器内容;(2)用Debug的D命令查看内存中的内容;(3)用Debug的E命令查看内存中的内容;(4)用Debug的原创 2016-04-14 19:04:13 · 24398 阅读 · 3 评论 -
汇编语言学习第二章-寄存器
本博文系列参考自>第三版,作者:王爽在CPU中,有四种主要的部件。运算器,控制器,寄存器,内部总线。这里的内部总线用于CPU内部进行各种信息的传递,与第一章所讲的控制总线,数据总线,地址总线不同,第一章所描述的总线属于外部总线,作为CPU与外部期间进行信息传递的通路。运算器用于各种信息的处理,寄存器用于信息的处理,控制器用于控制信息的处理。对于利用汇编编程来说,寄存器是主要操作的部件,不同的C原创 2016-04-14 09:56:50 · 1368 阅读 · 1 评论 -
汇编语言学习第一章-基础知识
本博文系列参考自>第三版,作者:王爽1.1 机器语言所谓机器语言则是直接能被机器理解和执行的语言。计算机的核心处理部件为CPU,然而CPU往往只能直接识别机器语言,机器语言为一系列用二进制0,1码代表的机器指令。当然指令集合的差别与具体的CPU有关,AMD与Intel的指令集显然是不同的。然而要直接用二进制的机器语言去描述一段程序或者解决一个问题往往是很困难的。比如说,我们要做原创 2016-04-13 16:26:04 · 1514 阅读 · 0 评论