《汇编语言》(王爽版)期末复习考试知识点总结

1.总线和寄存器

汇编指令是机器指令便于记忆的书写格式
计算机的数据和指令(都是二进制,由cpu区别)存储在内存或磁盘上
总线:计算机中连接cpu和其他芯片的导线。逻辑上划分为
1.地址总线:指定存储单元——宽度为20(1MB)
2.数据总线:cpu与内存或其他器件之间的数据传送——16
3.控制总线:cpu通过控制总线对外部器件进行控制

寄存器是cpu内部的信息存储单元
8086cpu有14个寄存器,都是16位(一个字),可以存放2个字节
通用寄存器可以分为两个独立的8位寄存器(如AX可分为AH和AL)
eg. add al 93H时会丢弃进位,因为al看作单独寄存器

物理地址的计算——段地址x16+偏移地址
DS存放段地址,[address]存放偏移地址
注:mov bx,1000H
       mov ds,bx

2.debug指令

1.R命令查看,改变寄存器的内容
2.D命令查看内存的内容
3.E命令改变内存的内容
4.U命令将内容中的机器指令翻译成汇编指令
5.A命令以汇编指令的格式在内存中写入机器指令
6.T指令执行机器指令

jmp指令:1.同时修改cs,ip:jmp 段地址:偏移地址
                                              jmp far ptr 标号(直接跳转到目的地址)
                2.仅修改ip:1.jmp+通用寄存器内数值;
                                   2.jmp short 标号(8位位移=标号处的地址-jmp地址后的第一个字节的地址)
                                      jmp near ptr 标号(16位位移=标号处的地址-jmp地址后的第一个字节的地址)
           

3.栈寄存器和loop循环

字的存储:低地址存放低8位,高地址存放高8位

栈寄存器:SS——存放栈顶的段地址;SP——存放栈顶的偏移地址
内存中SSx16到SSx16+SP-1作为栈
push ax:sp=sp-2;将ax中内容送入ss:sp指向的内存单元处,ss:sp指向新栈顶
pop ax:将ss:sp指向的内存单元处的数据送入ax中;sp=sp+2,指向新栈顶

三种段:
1.数据段:DS:[address]
2.代码段:CS:IP
3,栈段:SS:SP

loop指令(实现循环):cx=cx-1;判断cx中值不为0时转至标号处执行,为0时向下执行
dw:定义一个字;db:定义一个字节;dd定义双字数据(4个字节)
dup用来进行数据的重复
db/dw/dd 重复次数 dup(重复的数据)

4.汇编的各种指令

汇编中用‘ ’的方式指明数据以字符形式给出,编译器会转化为相应的ASCII码
大写字母+20H=小写字母(从a为61);小写字母-20H=大写字母(从A为41)
二重循环问题:在外层循环开始时将cx保存在寄存器,在最后赋值给cx
bx和bp都可以做基址寄存器,但bp默认为ss而不是ds

div指令:被除数默认在AX或AX和DX中;除数为8位或16位,在寄存器或内存单元中
当被除数位AX,除数为8位,商放在AL,余数放在AH
当被除数位DX和AX,除数为16位,商放在AX,余数放在DX(被除数为DX*10000H+AX)
格式: div 内存/寄存器

mul指令: 8位乘法时被乘数放在AL,结果放在AX,16时放在AX,结果放在DX(高位)和AX(低位)
格式: mul 内存/寄存器

offset 标号:取得标号的偏移地址
条件转移指令(jcxz):
格式 :jcxz 标号——如果CX=0,转移到标号处执行;否则什么也不做向下执行

标志寄存器:按每一位起作用。其中1,3,5,12,13,14,15无意义
ZF:0标志(结果为0时ZF=1)
PF:奇偶标志(1的个数为偶数时PF=1)
SF:符号标志(结果为负时SF=1)
CF:进位标志(对无符号数;有进位或借位时为1)
OF:溢出标志(对有符号数;有溢出时OF=1)

adc:带进位加法 adc ax,bx——ax=ax+bx+CF
sbb:带借位减法 sbb ax,bx——ax=ax-bx-CF
cmp指令:计算操作对象1-操作对象2,但不保存结果,只对标志寄存器产生影响
je/jz:结果为0——jne/jnz
js:结果为负——jns
jo:结果溢出——jno
jp:奇偶位为1——jnp

DF:方向标志位。如果DF=0,每次操作后si,di递增;如果DF=1,每次操作后si,di递减
串传送指令:movsb(递增递减1),movsw(递增递减2)
cld:将DF设为0,递增
std:将DF设为1,递减
eg. es为复制的目的段地址,ds为被复制串的段地址

移位指令分为逻辑移位和循环移位,算术移位等
逻辑左移:shl,将移出的最后一位放入CF,最低位补0
逻辑右移:shr,将移出的最后一位放入CF

显示数据:有25行,80列,每个单元2个字节,缓冲区段地址为b800H

5.内中断和外中断

内中断:有除法错误(0),单步执行(1),int n指令(n),溢出(4)四类
中断向量表:从0000:0000到0000:03FE,共1024个字节,256个中断项,每个中断项占4个字节
存放CS(2字节)和IP(2字节)
编写中断子程序可放在0000:0200到0000:02FF的256个字节
在有些情况下,CPU执行完当前指令后,即便发生中断也不会响应


过程:1.安装程序
          2.设置中断向量表
          3.编写子程序(末尾加iret)

安装程序:

mov ax,cs
mov es,ax
mov di,offset do0
mov ax,0
mov ds,ax
mov si,0200H
mov cx,offset do0end-offset do0
cld
rep movsb

设置中断向量表:

mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0

端口:in——cpu从端口读取数据
          out——cpu往端口写入数据

外中断:由外部设备发生的事件引起的中断。分为可屏蔽中断和不可屏蔽中断。
可屏蔽中断中IF=1引发中断过程;否则不响应中断
不可屏蔽中断的中断类型码固定为2

PC键盘输入处理:
扫描码说明按下和松开的键在键盘的位置
按下时产生的扫描码叫通码,第7位为0,松开时产生的扫描码叫断码,第7位为1
输入的字符被保存在BIOS键盘缓冲区,每个键盘输入用一个字单元保存,高位存放扫描码,低位存放字符码
键盘状态字节保存控制键和切换键



以上是博主在期末复习《汇编语言》时总结的知识要点,基本都是做往年题时碰到过的选择填空。

假如对你有帮助的,麻烦点赞关注哟。关注谢谢喵!!

你可能感兴趣的:(汇编,开发语言,学习)