![](https://img-blog.csdnimg.cn/20201113015809880.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编基础
汇编基础学习
雫#1999
道阻且长
展开
-
《汇编语言》第十七章 使用BIOS进行键盘输入和磁盘读写
键盘输入是最基本的输入,程序和数据通常需要长期存储在磁盘,BIOS为这两种外设的I/O提供了最基本的中断例程17.1 int 9中断例程对键盘输入的处理键盘输入将引发9号中断,BIOS提供了int 9中断例程,CPU在9号中断发生后,执行int 9中断例程,从60h端口读出扫描码,并将其转化为相应的ASCII码或状态信息,存储在指定空间(键盘缓冲区或状态字节)中一般的键盘输入,在CPU执行完int 9中断例程后,都放到了键盘缓冲区中,键盘缓冲区有16个字单元,可以存储15个按键的扫描码和对应的ASCI原创 2020-10-07 14:59:11 · 427 阅读 · 0 评论 -
《汇编语言》第十六章 直接定址表
16.1 描述了单元长度的标号code segment a: db 1,2,3,4,5,6,7,8 b: dw 0上述程序段中,code,a,b都是标号,这些标号仅仅表示了内存单元的地址还可以使用一种标号,这种标号不但表示了内存单元的地址,还表示了内存单元的长度,即表示在此标号处的单元,是一个字节单元,还是字单元,还是双字单元code segment a db 1,2,3,4,5,6,7,8 b dw 0上述的程序段在code段中使用了a,b后面却没有 :它们是同时描述内存地址和单元原创 2020-10-07 14:58:57 · 372 阅读 · 0 评论 -
《汇编语言》第十五章 外中断
CPU除了有运算能力外,还要有I/O(input/output)能力,如按下一个键后,CPU最终要处理这个键,CPU要及时处理外设的输入,需要解决两个问题:1,外设的输入可能随时发生,CPU如何得知?2,CPU容何处得到外设的输入?15.1 接口芯片和端口PC的接口卡和主板上,装有各种接口芯片,这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口访问外设的输入不直接送入内存和CPU,而是送入相关的接口芯片的端口中,CPU向外设的输出也不是直接送入外设,而是先送入端口中,再有相关的芯片送入原创 2020-10-07 14:58:43 · 362 阅读 · 0 评论 -
《汇编语言》第十四章 端口
各种存储器都和CPU的地址线,数据线,控制线相连,CPU在操控它们的时候,把它们都当作内存来对待,把它们总地看作一个由若干个存储单元组成的逻辑存储器,这个逻辑存储器我们将其称为内存地址空间在PC机系统中,和CPU通过总线相连的芯片除各种存储器外,还有以下3种芯片:1,各种接口卡(网卡,显卡)上的接口芯片,它们控制接口卡进行工作2,主板上的接口芯片,CPU通过它们对部分外设进行访问3,其它芯片,用来存储相关的系统信息,或进行相关的输入输出处理这些芯片中,都有一组可以由CPU读写的寄存器,这些寄存器,原创 2020-10-06 16:42:31 · 371 阅读 · 0 评论 -
《汇编语言》第十三章 int指令
13.1 int 指令int指令的格式为:int nn为中断类型码,它的功能是引发中断过程,执行过程如下:1,取中断类型码 n2,标志寄存器入栈,IF=0,TF=03,CS,IP入栈4,(IP)=(n乘4),(CS)=(n乘4+2)从此处转去执行n号中断的中断处理程序可以在程序中使用int指令调用任何一个中断的中断处理程序assume cs:codecode segement start:mov ax,0b800h mov es,ax mov byte ptr es原创 2020-10-06 15:25:30 · 5177 阅读 · 0 评论 -
《汇编语言》第十二章 内中断
任何一个通用的CPU,都可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来或内部产生的一种特殊信息,并可以立刻对接收到的信息进行处理,这种特殊的指令,我们将其称为 中断信息,中断信息可以来自CPU内部和外部,本章主要讨论来自CPU内部的中断信息中断信息要求CPU马上进行某种处理,并向所要进行的该种处理提供了必备参数的通知信息中断的意思指,CPU不再接着刚执行完的指令向下执行,而是转去处理这个特殊信息12.1 内中断的产生12.2 中断处理程序12.3 中断向量表12.4 中断过程1原创 2020-10-06 13:11:46 · 1036 阅读 · 0 评论 -
《汇编语言》第十一章 标志寄存器
CPU内部有一种特殊的寄存器,它具有3种作用:1,用来存储相关指令的执行结果2,用来为CPU执行相关指令提供行为依据3,用来控制CPU的相关工作方式8086CPU中,被称为标志寄存器(flag)。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字 PSW,flag和其它寄存器不一样,其它寄存器用来存放数据,都是整个寄存器具有一个含义,而flag寄存器是按位起作用的,它的每一位都有专门的含义,记录特定的信息flag的0,2,4,6,7,8,9,10,11位具有特殊的含义,其它位原创 2020-10-04 16:11:49 · 813 阅读 · 0 评论 -
《汇编语言》第十章 call 和 ret 指令
call指令和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP,它们经常被共同用来实现子程序的设计10.1 ret 和 retfret指令用栈中的数据,修改IP的内容,从而实现近转移CPU执行ret指令时,进行两步操作:1,(IP) = ((ss)*16 + (sp))2,(sp) = (sp) + 2相当于:pop IPretf指令用栈中的数据,修改CS和IP的内容,从而实现远转移CPU执行retf指令时,进行四步操作:1,(IP) = ((ss)*16 + (sp))2原创 2020-09-30 01:53:56 · 1174 阅读 · 0 评论 -
《汇编语言》第九章 转移指令的原理
可以修改IP,或同时修改CS和IP的指令统称为转移指令,即转移指令就是可以控制CPU执行内存中某处代码的指令8086的转移行为有以下几类:只修改IP时,称为段内转移,比如:jmp ax同时修改CS和IP时,称为段间转移,比如:jmp 1000:0由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移短转移:IP的修改范围为-128~127近转移:IP的修改范围为-32768~327679.1 操作符 offset操作符offset在汇编语言中是由编译器所处理的符号,它的功能是取得标原创 2020-09-30 01:53:44 · 546 阅读 · 0 评论 -
《汇编语言》第八章 数据处理的两个基本问题
计算机是进行数据处理,运算的机器,存在两个基本的问题:1,处理的数据在什么地方?2,要处理的数据有多长?用reg表示一个寄存器,用sreg表示一个段寄存器reg包括:ax,bx,cx,dxah,al,bh,bl,ch,cl,dh,dlsp,bp,si,disreg包括:ds,ss,cs,es8.1 bx,si,di和bp1,在8086CPU中,只有bx,si,di和bp这4个寄存器可以用在[ ]中来进行内存单元的寻址2,在[ ]中,bx,si,di和bp这4个寄存器可以单个出现,或只能以原创 2020-09-29 02:43:57 · 685 阅读 · 0 评论 -
《汇编语言》第七章 更灵活的定位内存地址的方法
7.1 and 和 or 指令and指令:逻辑与指令,按位进行与运算mov al,01100011Band al,00111011B执行结果:al = 00100011B通过该指令可将操作对象的相应位设为0,其它位不变or指令:逻辑或指令,按位进行或运算mov al,01100011Bor al,00111011B执行结果:al = 01111011B通过该指令可将操作对象的相应位设为1,其它位不变7.2 关于ASCII码计算机中所有的信息都是二进制,而人能理解的信息是具有原创 2020-09-28 20:57:32 · 220 阅读 · 0 评论 -
《汇编语言》第六章 包含多个段的程序
在操作系统的环境中,合法地通过操作系统取得的空间都是安全的,因为操作系统不会让一个程序所用的空间和其它程序以及系统自己的空间相冲突,在操作系统允许的情况下,程序可以取得任意容量的空间程序取得所需空间有两种方法,一是在加载程序时为程序分配,再就是程序在执行的过程中向系统申请,主要考虑第一种6.1 在代码段中使用数据考虑将下面8个数据的和的结果存在ax寄存器中:0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h通过循环累加的方式完成时,我们需要为这些数据分配原创 2020-09-28 20:57:17 · 169 阅读 · 0 评论 -
《汇编语言》第五章 [BX]和loop指令
[bx]和内存单元的描述:[bx]和[0]有些类似,[0]表示内存单元,它的偏移地址为0mov ax,[0]:将一个内存单元的内容送入ax中,这个内存单元的长度为2字节,存放一个字,偏移地址为0,段地址在ds中用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在ds中mov ax,[bx]:将一个内存单元内容送入ax中,这个内存单元的长度为2字节,存放一个字,偏移地址在bx中,段地址在ds中[bx]同样表示一个内存单元,它的偏移地址在bx中5.1 [BX]mov ax,[bx]:将b原创 2020-09-28 01:55:04 · 530 阅读 · 0 评论 -
《汇编语言》第四章 第一个程序
4.1 一个源程序从写出到执行的过程汇编语言程序从写出到执行的简要过程:1,编写汇编源程序,产生一个存储源程序的文本文件2,对源程序进行编译连接使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件,再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件可执行文件包括两部分第一部分:程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)第二部分:相关的描述信息,如程序的大小,需要的内存空间大小3,执行可执行文件中的程序,操作系统可以执行文件中的信原创 2020-09-28 00:29:38 · 343 阅读 · 0 评论 -
《汇编语言》第三章 寄存器(内存访问)
3.1 内存中字的存储CPU内用16位寄存器来存储一个字,高8位存放在高位字节,低8位存放在低位字节,内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),则一个字要用两个两个地址连续的内存单元中内存单元中存放数据20000(4E20H):字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成,高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据低位字节内存中存储字单元采用高高低低原则分开存储3.2 DS和[address]CPU要读写一个内存单元原创 2020-09-28 00:29:19 · 1466 阅读 · 0 评论 -
《汇编语言》第二章 寄存器
一个典型的CPU由运算器,控制器,寄存器,时钟组成,这些在CPU内部的器件靠内部总线相连,内部总线实现CPU内各个器件之间的联系,外部总线实现CPU和主板上其它器件的联系运算器:进行信息处理寄存器:进行信息存储控制器:控制各种器件进行工作时钟:负责发出CPU开始计时的时钟信号,时钟的频率越高,CPU的运行速度越快内部总线:连接各种器件,在它们间进行数据的传输对于一个程序员来说,CPU中主要部件是寄存器,寄存器是程序员可以用指令读写的部件,程序员通过改变各种寄存器中的内容来实现对CPU的控制不同原创 2020-09-28 00:28:51 · 442 阅读 · 0 评论 -
《汇编语言》 第一章 基础知识
1.1 机器语言机器语言:机器指令的集合,机器指令即一台计算机可以正确执行的命令,机器指令是一串二进制数字,计算机将其转变成一列高低电平,以使计算机的电子器件受到驱动,进行运算每一种微处理器,由于硬件设计和内部结构的不同,需要使用不同的电平脉冲来控制,使其工作,所以每一种微处理器都有自己的机器指令集,即机器语言早期程序员将0,1数字编成的程序代码打在纸带上或卡片上,1打孔,0不打孔,再将程序通过纸带或卡片输入计算机,进行运算1.2 汇编的诞生由于直接使用机器语言过于麻烦,机器语言难以辨别与记忆,于原创 2020-09-28 00:28:38 · 240 阅读 · 0 评论