汇编语言(王爽著)第二章 寄存器

1.概念问题

寄存器的作用:信息存储

2.地址的表示方式(不唯一)

段地址+偏移地址

3.为什么不能直接表示物理地址

16位机,地址总线20根

4.寄存器的分类

通用寄存器和专用寄存器

通用:ax,bx,cx,dx;专用:cs,ds;ss,es,ip,,,,,

其中段寄存器:cs,ds;ss,es;

5.修改cs,ip的指令

首先思考为什么修改?

汇编语言是按照顺序进行执行的,指令的地址也是不断递增的。如果我想循环执行某条指令,怎么办?就把当前要读取的指令地址转到上面执行过的某个地址。

如何修改呢?用jmp指令。比如修改cs,ip 的值,jmp 2ae3:3  

如果单独改ip的值,可以通过jmp ax   

6.执行指令

如何执行指令?

输入 t即可。

如何执行指定地址处的指令?

需要对cs,ip进行修改!

如何进行修改?

r cs

r ip 

此处修改与5.修改cs,ip的指令有何区别??

一个是debug模式下的修改,一个是在程序运行过程中的修改。

6.代码段

为什么需要代码段这个概念?

用处:存放代码

定义:长度《=64kB大小的一组代码,存在一组地址连续,起始地址为16的倍数的内存单元中。

为什么《=64KB?  偏移地址就是16根线来表示,最大就是64K。每个地址对应一个字节,所以64KB空间。

7.学完这一节,你有哪些新的认识?

a计算机如何执行内存中的指令?是通过cs,ip寄存器中的值。

为什么计算机能总不停息的运行指令?因为ip会自动加,使得顺序从内存中读出指令来。

任何复杂的运算,都可以被分解为一系列二值运算,所以执行a+b+c,先是把a,b放到寄存器中,求出a+b放在寄存器中,在把c放到寄存器中,求出a+b+c。

一条指令的大小由什么决定? 

比如 mov ax,0123     mov bx,0003  mov ax,bx.这三个指令的机器语言是  

执行指令是根据cs,ip来执行的。一个c语言程序,指令的运行也是从某个地址开始运行。那么执行第一条指令时:cs,ip的值应该时固定的。程序的存储应该也是从一个固定的位置开始,与前面的cs,ip值对应。

本章小结:

R命令:查看,修改cpu寄存器的内容

通过修改cs ip的值,执行该内存地址的代码;

E命令:修改内存中的内容
给内存单元写入值,使得其变为数据或者代码。

T命令:执行CSip指向的内存单元。

A命令:以汇编指令的方式向内存中写入指令。

本节涉及的计算,只是把值直接赋值给寄存器,比如mov ax 1, mov bx 1,add ax bx。这种一种比较基础的运算。我们知道计算机的内存是可以存储数据的,如果我想利用内存中的数据进行加和,比如10001和10002两个单元的值加和,那又如何操作呢?

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值