《汇编语言》
王爽汇编语言
吃米饭
这个作者很懒,什么都没留下…
展开
-
汇编语言-使用BIOS进行键盘输入和磁盘读写
int9中断例程对键盘输入的处理 键盘输入将引发9号中断,BIOS提供了int9中断例程。CPU在9号中断发生后,执行int 9中断例程,从60h端口读出扫描码,并将其转化为相应的ASCII码或状态信息,存储在内存的指定空间(键盘缓冲区或状态字节)中。 一般的键盘输入,在CPU执行完int 9中断例程后,都放到了键盘缓冲区中。键盘缓冲区中有16个字单元,可以存储15个按键的扫描码和对应的A...原创 2020-03-16 21:18:24 · 1057 阅读 · 0 评论 -
汇编语言-直接定址表
表述了单元长度的标号assume cs:codecode segment a dw 1,2,3,4,5,6,7,8 ;a代表了code段的首地址code:00,由于dw,也代表了a开始的这一小段内存都是按照字单元存储的。 ;从code:[0]~code:[15],也就是,a[0]~a[15];a[si]代表了从code:00开始的偏移量为si的内存...原创 2020-03-16 21:02:49 · 1374 阅读 · 0 评论 -
汇编语言-外中断
cpu在计算机系统中,除了能够执行命令,进行运算以外,还应该能够对外部设备进行控制,接收它们的输入,向它们进行输出。也就是说,cpu除了有运算能力外,还要有I/O能力。接口芯片和端口 在PC系统的接口卡和主板上,装有各种接口芯片。这些外设接口芯片的内部有若干寄存器,cpu将这些寄存器当作端口来访问。外设的输入不直接送入内存和cpu,而是送入相关的接口芯片和端口中。cpu向外设的输出也不是...原创 2020-03-16 20:10:38 · 1149 阅读 · 0 评论 -
汇编语言-端口
在PC机系统中,和CPU通过总线相连的芯片除了各种存储器外,还有以下3中芯片。各种接口卡(比如,网卡,显卡)上的接口芯片,它们控制接口卡进行工作;主板上的接口芯片,CPU通过它们对部分外设进行访问;其他芯片,用来存储相关的系统信息,或者进行相关的输入输出处理。这些芯片中,都有一组可以由CPU读写的寄存器。这些寄存器,它们在物理上可能处于不同的芯片中,但它们在以下两点上相同。都和CP...原创 2020-03-15 20:33:59 · 1505 阅读 · 1 评论 -
汇编语言-int指令
int 指令int 指令的格式为:int n,n为中断类型码,它的功能是引发终端过程。CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。取中断类型码n;标志寄存器入栈,IF=0,TF=0;CS,IP入栈;(IP)=(N4),(CS)=(N4+2)从此转去执行n号中断的中断处理程序。int指令的最终功能和call指令相似,都是调用一段程序。...原创 2020-03-15 19:43:45 · 4285 阅读 · 0 评论 -
汇编语言-内中断
中断的意思是指CPU不在接着(刚执行的指令)向下执行,而是转去处理这个特殊信息,而这个特殊的信息我们可以称其为中断信息。中断信息是要求CPU马上进行某种处理,并向所要进行的该种处理提供了必备的参数的通知信息。内中断的产生对于8086CPU,当CPU内部有下面的情况发生的时候,将产生响应的中断信息。除法错误,比如,执行div指令产生的除法溢出;单步执行;执行into指令;执行int指令...原创 2020-03-15 18:55:58 · 783 阅读 · 0 评论 -
汇编语言-标志寄存器
8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。8086CPU的flag寄存器中的结构如图:ZF 标志flag的第6位是ZF,零标志位。它记录相关指令执行后,其结果是否为0.如果结果为0,那么zf=1;如果结果不为0,那么zf=0。在8086CPU的指令集中,有的指令的执...原创 2020-03-13 18:19:29 · 1931 阅读 · 0 评论 -
汇编语言-call和ret指令
call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被共同用来实现子程序的设计。ret 和 retfret指令用栈中的数据,修改IP的内容,从而实现近转移;retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移;CPU执行ret指令时,进行下面两步操作:(ip)=((ss)*16+(sp))(sp)=(sp)+2CPU执行retf指令时,进行下...原创 2020-03-12 17:57:55 · 1605 阅读 · 0 评论 -
汇编语言-转移指令
可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。8086CPU的转移行为有以下几类。只修改IP时,称为段内转移,比如:jmp ax同时修改CS和IP时,称为段间转移,比如:jmp 1000:0。由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。短转移IP的修改范围为 -128~127。近转移IP...原创 2020-03-11 18:31:37 · 1081 阅读 · 0 评论 -
汇编语言-寻址和处理数据
and和or指令and 指令:逻辑与指令,按位进行与运算。例如:and al,11111110B ;将al的第0位设为0。or 指令:逻辑或指令,按位进行或运算。例如:or al,00000001B ;将al的第0位设为1。ASCll码ASCLL码就是一种编码方案所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。比如说,我们按下键盘的 a 键,这个...原创 2020-03-08 15:16:30 · 610 阅读 · 0 评论 -
汇编语言-[bx]和loop指令和多个段
5.1 [BX]和内存单元的描述要完成描述一个内存单元,需要两种信息:内存单元的地址:可以用 [0] 表示一个内存单元, 0 表示单元的偏移地址,段地址默认在 ds 中;同样也可以用 [bx] 表示一个内存单元,它的偏移地址在 bx 中;内存单元的长度(类型):将一个内存单元的内容送入 ax ,这个内存单元的长度就为 2 字节(字单元),存放一个字;将一个内存单元的内容...原创 2020-03-03 22:50:18 · 460 阅读 · 0 评论 -
汇编语言-程序的前世今生
4.1 编程汇编语言程序中,包含两种指令:汇编指令:是有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。伪指令:没有对应的机器指令,最终不被CPU执行,由编译器来执行,编译器根据伪指令来进行相关的编译工作。segment 和 ends 是一对成对使用的伪指令,这是在写可被编译的汇编程序时,必须要用到的一对伪指令。segment 和 ends 的功能是定义一个段,s...原创 2020-03-01 21:51:42 · 486 阅读 · 0 评论 -
汇编语言-寄存器(内存访问)
3.1 字和数据段1. 字在内存中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。2. 用mov指令访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。3. [address]表示一个偏移地址位address的内存单元。4. 在内存和寄存器之间传送字行数据时,高地址单元和高8位寄存器,低地址单元和低8位...原创 2020-02-29 18:26:36 · 641 阅读 · 0 评论 -
汇编语言-寄存器
2.1 通用寄存器AX, BX, CX, DX 这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。8086CPU这5个寄存器都可以分为两个可以独立使用的8位寄存器来用:AX可分为AH和AL;BX可分为BH和BL;CX可分为CH和CL;DX可分为DH和DL;AX的低8位(0 - 7)构成AL寄存器,高8位(8 - 15)构成了AH寄存器。AH和AL寄存器是可以独立使用的8位寄存...原创 2020-02-26 13:30:19 · 1069 阅读 · 0 评论 -
汇编语言--绪论
1. 机器语言与机器指令机器语言是机器指令的集合。机器指令是一台机器可以正确执行的命令。机器指令有一串二进制数表示,如010101汇编语言与汇编指令汇编语言的主题是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。汇编指令是机器指令的助记符。运行流程: 汇编指令 --> 编译器 --> 机器码 --> 计算机...原创 2020-02-20 16:33:02 · 366 阅读 · 0 评论