汇编语言学习

2019-10-19 23:08 来源:未知

零星记录:

2.9 段贮存器

段贮存器就是提供段地址的。

8086有4个段寄放器:CS、 DS、 SS、 ES

当8086CPU要拜谒内部存款和储蓄器时,由着4个段存放器提供内部存款和储蓄器单元的段地址。

  8086CPU贮存器都为16人的,可存放四个字节;AX、BX、CX、DX那4个贮存器是常见用来寄存在平常性的数量,被称得上通用存放器。
  AX:

2.10 CS和IP

CS和IP是8086CPU中最根本的贮存器,它们指令了CPU当前要读取指令的地址。

CS为代码段贮存器,IP为命令指针贮存器

图片 1

     1.开首状态(CS:3000H,IP:0000H,CPU将从内部存款和储蓄器两千Hx16+0000H处读取指令推行)

     2.CS、IP中的内容送入地址加法器(地址加法器达成:物理地址=段地址x16+偏移地址)

     3. 地方加法器将物理地址送入输入输出调节电路

     4. 输入输出调控电路将概略地址三千0H送上地址总线

     5. 从内部存款和储蓄器20000H单元开端寄放的机器指令B8 23 01 通过数量总线被送入CPU中

此地小编有一个狐疑,为何它领悟要读取B8 23 01吧?它是怎么鲜明那是一个大器晚成体化的一声令下?CPU怎么样判别指令长度此处给出了相比较清楚的答案。

     6. 输入输出调控电路将机器指令B8 23 01 送入指令缓冲器(读取这一条指令后,IP中的值自动扩充,以使CPU能够读取下一条指令。因日前读入的授命B82301长度为3个字节,所以IP中的值加3,此时CS:IP指向内部存款和储蓄器单元3000::0003)

     7.实践调整器推行命令 B8 23 01 (即mov ax 0123H)

     8.指令被实行后AX中的内容为0123H(此时,CPU将从3000::0003处读取指令)

     9. 再次以上的动作。

小结如下:

(1)从CS:IP指向的内部存储器单元读取指令,读取的指令步向指令缓冲区

(2) IP=IP+所读取的吩咐的长度,进而指向下一条指令

(3) 推行命令、转到步骤(1),重复那个历程。

在8086CPU加电运行或复位后(即CPU刚在那早先专业时)CS和IP设置为CS=FFFFH,IP=0000H,即在8086PC机刚运营时,CPU从内部存款和储蓄器FFFF0H单元中读取指令实行,FFFF0H单元中的指令是8086PC机开机后试行的率先条指令。

标题:CPU依照什么奖内部存款和储蓄器中的消息看作指令?

CPU将CS:IP指向的内部存款和储蓄器单元中的内容作为指令。

图片 2

2.11 修改CS、IP的指令

若想同期修改CS、IP的内容,可用形如“jmp 段地址:偏移地址”的指令完毕

,如

jmp 2AE3:3,实行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令

jmp 3:0B16,推行后:CS=0003H,IP=0B16H,CPU将从00B46H读取指令

若想仅修改IP的内容,可用形如“jmp 某蒸蒸日上法定寄放器”的下令实现,如

jmp ax,指令奉行前,ax=一千H,CS=三千H,IP=0003H

              指令实践后,ax=一千H,CS=三千H,IP=1000H

jmp ax,在含义上好似:mov IP,ax(实际不是真的有如此的吩咐)

标题:内部存款和储蓄器中寄存的机器码和对应的汇编指令意况如图,设CPU开头状态:CS=3000H,IP=0000H,请写出指令推行连串。思虑后剖判

图片 3

(1)mov ax,6622H

(2)jmp 1000:3

(3)mov ax,0000

(4)mov bx,ax

(5)jmp bx

(6)mov ax 0123H

(7)实施第三步

 

2.12 代码段

大家得以依附供给将风流倜傥组内部存储器单元定义为二个段。大家可以将长度为N(N<=64KB)(代码段也是段啊,所以无法当先64KB)的大器晚成组代码,存在黄金年代组地方三翻五次,开端地址为16的翻番的内存单元中,大家可以以为定义了贰个代码段:

mov ax,0000 (B8 00 00)

add ax,0123H(05 23 01)

mov bx,ax(8B D8)

jmp bx (FF E3)

这段长度为13个字节的命令,寄放在123B0H~123B9H的意气风发组内存单元中,大家就能够感到,123B0H~123B9H这段内部存款和储蓄器是用来贮存代码的,是二个代码段,它的段地址为123BH,长度为11个字节。

CPU并不会自动的将大家定义的代码段中的指令当做指令来施行。CPU只认被CS:IP指向的内部存款和储蓄器单元中的内容为命令。所以要让CPU实施,必得求将CS:IP指向所定义的代码段中的第一条指令的首地址。本例中,大家可设CS=123BH,IP=0000H。

  以8086CPU来讲,那八个寄放器都可分为八个可独自使用的8位寄放器使用,以-H和-L表示左右两人;
图片 4

 

    指令mov,add: 左操作数 = 左操作数与右操作数运算结果。

  8086CPU中付出物理地址方法: 多少个拾陆个人地点合成多个21人物理地址:
    段地址×16+偏移地址 = 物理地址;
  '段地址×16' 可说是基础地址;内部存款和储蓄器也以此分段的办法管理内部存储器;段寄放器:CS 和 IP,二者提醒了CPU当前要读取的一声令下的地方,CS为代码段贮存器,IP为命令指针寄放器;若CS中为M,IP中为N, 8086CPU将从内部存款和储蓄器M×16+N单元开头读取一条指令并施行。

  CS和IP不可能透过mov改变,可用 'jmp'命令,形如“jmp 段地址:偏移地址”,那是修改了双面包车型地铁剧情,若仅想修改IP的源委,可用“jmp 某一官方存放器”,如 jmp ax 或 jmp bx。
  最终要专心CPU的办事进程:
    ①从CS:IP指向的内部存款和储蓄器单元读取指令,读取的授命步向指令缓冲区;
    ②IP指向下一条指令;
    ③实施命令。(转到①双重步骤)。

DOS中Debug的使用:
/*关于win10中debug用不了
  1.贰个艺术是能够透过开机时为现身开机界面时按 f8 步入形式选择命令行形式...

  2.图形分界面中:
    固然有debug最棒,未有的话win+奇骏输入command;再特其余话看下去;
    作者的windows10家庭版没有了debug程序也回天乏术运行command,只可以和睦想艺术了,比方说度娘;emmm,分享一下。
    下载贰个DOSBox,再平昔打开搜狗寻觅下载一个debug.exe;
    安装DOSBox,最佳选用安装C盘(系统盘)外的盘,防止出难题,之后展开安装的文本夹的DOSBox0.74 Options.bat文件,拉到最尾巴部分,增添如下代码:

  图片 5

  也足以将代码在DOSBox中输入,但与上述同类做防止每一次展开都要输一遍。
  命令中D为作为虚构盘的诚实磁盘,:DOSBOX_SELF为自定义的文本夹,之后加盟未有自带的debug.exe,将下载的debug.exe放入该文件夹,张开DOSBox输入debug就可以使用。

 

  正常使用:

图片 6

*/
  -LX570:查看、更换CPU寄放器内容;
  查看CS和IP值,比如:

图片 7

  在那之中CS为073F,IP为0102;便是说CPU当前要读取CS:IP即0x74F2处的一声令下,並且在debug中还出示出了该内存单元中寄存的机器码,为呃。。0000,后边则为翻译的汇编指令。

  用r指令改变寄放器中的值,如:

图片 8

  -D:命令查看内容,形如 d 1000:0,为"-d 段地址 : 偏移地址"格局,会来得接下去的1贰15个单元的从头到尾的经过, 右侧为ascii码值;

图片 9

  能够试试 d 一千:9,同样输出128单元内容;再比方说 d 1000:9 9可决定输出;

  -E:改写内部存款和储蓄器中的源委,黄金年代种是形如 e 一千:0 回车,会有下大摇大摆行种种字节值,'.'后边一贯输入修改值,空格不修改或接续下三个,回车甘休;第三种形如 e 1000:0  "fdfd"   "dfds"  12  121;用-牧马人可查阅;但写入的是机器码如:b8 01 00 (mov ax,0001)、b90200(mov cx,0002)、01c8(add ax,cx),-d命令无法映今世码,能够用-u命令查看(形如u  一千:0)

图片 10

 

  -T命令可用来举行我们写入的通令,但必得先让CS:IP指向欲实行的授命单元,每便一条指令:

图片 11

  各存放器数值随指令发生变化;

  -A命令以汇编指令情势在内存中写入机器指令:方式:-a  1000:0(一千:0为输入指令的预设地址)

图片 12

  输入完成回车甘休,-d命令查看机器码。

 

各指令能够证实指令和数据在机械中精神上是平等的。

  查看寄放器音讯、修改修改寄存器:-陆风X8;

  查看内部存款和储蓄器单元内容:-D;

  修改内部存款和储蓄器单元内容:-E;

  解释内部存款和储蓄器内容为机器码及对应汇编指令:-U;

  实行CS:IP指向的内部存款和储蓄器单元处:-T;

  写入汇编指令至内部存款和储蓄器中:-A。

 

  在PC及主板的ROM中写有三个生产日期,在内部存款和储蓄器FFF00H~FFFFFH的某几个单元,在那之中内容不可能修改,也不可能用d的出口长度调控,因为为只读内部存款和储蓄器区域。

がんばって
TAG标签:
版权声明:本文由金沙澳门唯一官网发布于金沙澳门唯一官网,转载请注明出处:汇编语言学习