汇编语言——解读CPU课堂笔记

CPU(中央处理器)

计算机发展史

早期计算机没有CPU,是由电路写死的。
后来升级为可编程计算机,由插孔、插线重写计算机系统。
由于插孔受插孔数的限制,对程序进行二进制编码,减少需要的插孔数。
最后发展为现存的CPU形式

8086功能结构

欸?8086是个啥?
Tips
8086是Intel设计的16位微处理器芯片,也是x86架构的鼻祖。说白了,8086就是一款原始的CPU。

下面这张图就很清晰啦~
在这里插入图片描述
左边的为执行部件EU,负责指令的译码和执行。
右边的为总线接口单元BIU,负责读取指令和操作数。
这两部分就称为8086的功能结构。也可以看出,指令的执行首先需要BIU读取一条指令,然后送入EU进行读译码和执行。而汇编语言就是对寄存器进行编程。

寄存器组:

由上图可以看到,8086内部有14个寄存器(8个通用寄存器,1个指令指针寄存器IP,1个标志寄存器,4个段寄存器)

通用寄存器

16位通用寄存器:AX(AH+AL)、BX(BH+BL) CX DX SI DI BP SP
可细分为以下种类:

  • 数据寄存器(存放计算的结果和操作数):AX(累加器) BX(基址寄存器) CX(计数器) DX(数据寄存器)
  • 变址寄存器(存储器寻址时提供地址):SI(源变址寄存器) DI(目的变址寄存器)
  • 指针寄存器(寻址内存堆栈内的数据):SP(偏移地址) BP(基址)
指令指针寄存器IP

IP寄存器是一个专用的寄存器,指示代码中指令的偏移地址,与CS联用,确定下一条指令的物理地址(CS:IP)。

标志寄存器

标志用于反映指令执行结果。

  • 状态标志:记录程序运行结果的状态信息,CF ZF SF PF OF AF
  • 控制标志:由程序根据需要的指令设置,控制处理器执行指令的方式,DF IF TF
    状态标志:
标志名功能DEBUG表示其他
进位标志CF对于无符号数运算,运算结果的最高有效位有进位或借位时CF=1CY CF=1;NC CF=0
零标志ZF运算结果为0,则ZF=1ZR ZF=1;NZ ZF=0在判断是否为0时,不考虑进位,即(1)00为0
符号标志SF运算结果最高位为1,则SF=1NG SF=1;PL SF=0负数为1,正数为0;同样不考虑进位
溢出标志OF对于有符号算数结果溢出为1OV OF=1;NV OF=0两正数相加得负数则溢出;一正减一负得负数溢出;两正数相加为正溢出
奇偶标志PF运算结果最低字节中1的个数为0或偶数,PF=1PE PF=1;PO PF=0低8位1的个数
辅助进位标志AF运算时D3位(低半字节)有进位或借位时,AF=1AC AF=1;NA AF=0低半字节,即低四位

控制标志:

标志名功能DEBUG表示其他
方向标志DF在串操作指令中控制地址变化方向DN DF=1;UP DF=0DF=0存储地址自动增加;DF=1,存储地址自动减少
中断允许标志IF控制外部可屏蔽中断是否被处理器响应EI IF=1;DI IF=0IF=1,允许中断;IF=0,禁止中断
陷阱标志TF控制处理器进入单步操作方式TF=0,正常;TF=1,单步执行

DEBUG

DEBUG是常用的汇编语言级调试工具,可用于分析指令、跟踪程序。
在这里插入图片描述
用DEBUG实现hello,world程序!

DEBUG//进入DEBUG命令
A//调用汇编功能
Mov dx,200//寄存器dx送入200
Mov ah,9//9号显示功能
Int 21//调用21H功能
Mov ah,4c//4c为带返回码结束
Int 21//再次调用21功能,到此汇编指令结束,回到DEBUG命令
E 200 'Hello,world!$'//DEBUG中的修改数据功能
Rcx
200
N C:\Hello.com//将文件命名
W//写文件

作业

在这里插入图片描述
该问题的唯一难点是如何对个人信息进行换行。经同学提醒,直接通过-e修改数据指令,在需要换行的位置加入0D 0H(回车,换行的ASCII码)即可。
如:

-e 150 'Number:201881111'0D 0H'Phone:111111'

该指令实现两字符串间的换行。

只发送com文件
在这里插入图片描述
该问题的难点在于构建OF置1,加法运算时,在考虑溢出时,不能将进位计算在内。在此处我利用了网上的16进制加法器进行构造。主要是有点懒。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值