16位汇编复习,汇编语言学习

2019-11-21 23:05栏目:网络操作
TAG:

  -D:命令查看内容,形如 d 1000:0,为"-d 段地址 : 偏移地址"情势,展览会示接下去的1贰十四个单元的剧情, 侧边为ascii码值;

2.9 段贮存器

段寄放器便是提供段地址的。

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

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

本身才疏学浅,不能够保障整个所写精确性,有错请建议。

1.1
CPU的寻址本事是由地址总线决定的,二个地址总线宽度对应三个内部存款和储蓄器单元。8086有20根地址总线,
CPU数据总线意气风发根传多个bit,8086为16根数据总线,一遍传输三个字节。数据总线与存放器,管理位数相仿,对应大家今后学到的最大拍卖数据钦定:word ptr。
在存款和储蓄器中数量和次序以二进制码贮存,大家用-d查看内部存款和储蓄器时,用16进制数字展现示,各种字节空生龙活虎格。
2.2
段地址与偏移地址
大要地址=段地址x16+偏移地址
8086有20根地址总线,那正是它为何用七个15位的段地址和摇头地址来合成三个贰十一位的情理地址的缘故。
2.3
轻松时刻CS:IP指向CPU将在实行的下一步操作,课后演练中有三条指令,因为第三条jmp改进了IP,所以共施行了柒回。
jmp指令(注意jmp是二个汇编指令,不能够在debug中运用,与考试毫不相关。卡塔 尔(英语:State of Qatar)
**jmp 段地址:偏移地址 ** 同有时间改进CS:IP
**jmp 存放器名 ** 只改革IP 等同于 MOV IP,贮存器名
第二章实验
e命令用来写入机器码 a写汇编指令,写完后用r指令把CS与IP纠正到写入指令处,用t命令实施就可以。

-r 查看和转移CPU存放器的原委:
-r ax 后按下enter键将现出:提醒输入,输入内容即可改换ax存放器的开始和结果。
-d 查看内部存款和储蓄器中的源委:
-d 1000:0 意思正是查看内容地址为10000h-10070h内部存款和储蓄器中的内容。
-d 1000:0 9翻看1000:0-1000:9单元中的内容
-d 1000:10 10查看1000:10内部存款和储蓄器中的开始和结果
-e 改写内存中的授命:
-e 1000:0 1 'a' 2 'b' 3 'c'
向1000:0 1000:2 1000:4单元中写入1,2,3, 向1000:1 1000:3 1000:5单元中写入"a" "b" "c"。
-u 将内部存储器中的机器指令翻译成汇编指令:
-u 1000:0
-t 实行一条机器指令:
推行cs:ip所指向的授命
-a 以汇编指令的格式在内存中写入一条机器指令

3.1
多介怀内部存款和储蓄器中的高位与未有地方。

图片 1

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=1000H,CS=二〇〇一H,IP=0003H

              指令实施后,ax=1000H,CS=二零零四H,IP=1000H

jmp ax,在含义上好似:mov IP,ax(并非真的好似此的通令卡塔 尔(英语:State of Qatar)

标题:内部存款和储蓄器中存放的机器码和对应的汇编指令情况如图,设CPU起首状态:CS=二零零一H,IP=0000H,请写出指令试行种类。思索后剖析

图片 2

(1)mov ax,6622H

(2)jmp 1000:3

(3)mov ax,0000

(4)mov bx,ax

(5)jmp bx

(6)mov ax 0123H

(7卡塔尔实践第三步

栈的push与pop

SS:SP

3.7
栈的段地址ss,是一个段贮存器(全体段寄放器都不能够直接赋值卡塔 尔(阿拉伯语:قطر‎,大家必要二个贮存器来中间转播。

寄存器reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;
段贮存器sreg:ds,ss,cs,es;

……

 

2.10 CS和IP

CS和IP是8086CPU中最关键的存放器,它们指令了CPU当前要读取指令的地点。

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

图片 3

     1.方始状态(CS:二零零零H,IP:0000H,CPU将从内部存款和储蓄器二〇〇四Hx16+0000H处读取指令试行卡塔尔国

     2.CS、IP中的内容送入地址加法器(地址加法器达成:物理地址=段地址x16+偏移地址卡塔 尔(英语:State of Qatar)

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

     4. 输入输出调控电路将大意地址二零零三0H送上地址总线

     5. 从内部存款和储蓄器二〇〇〇0H单元起初存放的机器指令B8 23 01 通过数量总线被送入CPU中

这里小编有叁个迷惑,为啥它领悟要读取B8 23 01呢?它是怎么明确那是四个完完全全的吩咐?CPU如何决断指令长度此地给出了相比较清楚的答案。

     6. 输入输出调整电路将机器指令B8 23 01 送入指令缓冲器(读取这一条指令后,IP中的值自动扩张,以使CPU能够读取下一条指令。因眼下读入的通令B82301长度为3个字节,所以IP中的值加3,那时CS:IP指向内部存款和储蓄器单元2004::0003卡塔尔

     7.实行调控器施行命令 B8 23 01 (即mov ax 0123H卡塔尔国

     8.指令被实践后AX中的内容为0123H(那个时候,CPU将从二〇〇二::0003处读取指令卡塔 尔(英语:State of Qatar)

     9. 双重以上的动作。

小结如下:

(1卡塔尔从CS:IP指向的内部存款和储蓄器单元读取指令,读取的通令步向指令缓冲区

(2卡塔 尔(英语:State of Qatar) IP=IP+所读取的一声令下的尺寸,进而指向下一条指令

(3卡塔 尔(阿拉伯语:قطر‎ 推行命令、转到步骤(1卡塔 尔(阿拉伯语:قطر‎,重复这一个进度。

在8086CPU加电运行或重新初始化后(即CPU刚开端专业时卡塔 尔(阿拉伯语:قطر‎CS和IP设置为CS=FFFFH,IP=0000H,即在8086PC机刚运行时,CPU从内部存款和储蓄器FFFF0H单元中读取指令实践,FFFF0H单元中的指令是8086PC机开机后进行的首先条指令。

主题素材:CPU遵照什么奖内部存储器中的新闻看作指令?

CPU将CS:IP指向的内存单元中的内容作为指令。

王爽第三版依据课后练习题顺序,结合课本读书效果更佳,简单的主题素材不再提议

 

2.12 代码段

作者们可以依据需求将生机勃勃组内部存款和储蓄器单元定义为叁个段。大家得以将长度为N(N<=64KB卡塔 尔(英语:State of Qatar)(代码段也是段啊,所以不能当先64KB卡塔尔国的生机勃勃组代码,存在大器晚成组地方三回九转,开头地址为16的翻番的内部存储器单元中,我们得以认为定义了多个代码段:

mov ax,0000 (B8 00 00)

add ax,0123H(05 23 01)

mov bx,ax(8B D8)

jmp bx (FF E3)

这段长度为拾叁个字节的一声令下,寄存在123B0H~123B9H的后生可畏组内部存款和储蓄器单元中,我们就能够以为,123B0H~123B9H这段内部存款和储蓄器是用来寄放代码的,是三个代码段,它的段地址为123BH,长度为拾二个字节。

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

DOS中Debug的使用:
/*关于win10中debug用不了
  1.多少个办法是足以因而开机时为现身开机界面时按 f8 步向模式选拔命令行格局...

散装记录:

 

图片 4

  校正内部存款和储蓄器单元内容:-E;

 

  正常使用:

  在PC及主板的ROM中写有贰个临盆日期,在内存FFF00H~FFFFFH的某多少个单元,个中内容无法改进,也不可能用d的出口长度调整,因为为只读内部存款和储蓄器区域。

图片 5

  输入完结回车结束,-d命令查看机器码。

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

  8086CPU贮存器都为14人的,可存放多个字节;AX、BX、CX、DX那4个寄放器是平铺直叙用来寄放日常性的数据,被称之为通用存放器。
  AX:

各指令能够证实指令和数据在机器中精气神儿上是生龙活虎律的。

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

  -A命令以汇编指令情势在内部存款和储蓄器中写入机器指令:方式:-a  1000:0(1000:0为输入指令的预设地址卡塔尔

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

图片 7

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

  CS和IP不能由此mov更换,可用 'jmp'命令,形如“jmp 段地址:偏移地址”,那是改进了两者的源委,若仅想更改IP的内容,可用“jmp 某风姿浪漫法定贮存器”,如 jmp ax 或 jmp bx。
  最终要在乎CPU的干活历程:
    ①从CS:IP指向的内部存款和储蓄器单元读取指令,读取的通令步向指令缓冲区;
    ②IP指向下一条指令;
    ③实践命令。(转到①再度步骤卡塔 尔(阿拉伯语:قطر‎。

  能够尝试 d 1000:9,相像输出128单元内容;再举个例子 d 1000:9 9可调控输出;

图片 8

  8086CPU中付出物理地址方法: 两个十三人地点合成一个贰十个人物理地址:
    段地址×16+偏移地址 = 物理地址;
  '段地址×16' 可说是幼功地址;内部存款和储蓄器也以此分段的不二等秘书诀管理内存;段贮存器:CS 和 IP,二者提醒了CPU当前要读取的指令之处,CS为代码段存放器,IP为命令指针贮存器;若CS中为M,IP中为N, 8086CPU将从内部存款和储蓄器M×16+N单元伊始读取一条指令并实行。

  图片 9

  查看寄放器新闻、改革改革寄放器:-传祺;

 

  试行CS:IP指向的内部存储器单元处:-T;

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

*/
  -Tiggo:查看、更动CPU贮存器内容;
  查看CS和IP值,比如:

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

图片 10

图片 11

  2.图形分界面中:
    假使有debug最佳,未有的话win+Odyssey输入command;再特别的话看下去;
    我的windows10家庭版未有了debug程序也力不从心运行command,只可以自身想艺术了,举例说度娘;emmm,分享一下。
    下载多个DOS博克斯,再一贯展开搜狗寻觅下载两个debug.exe;
    安装DOSBox,最佳选用安装C盘(系统盘卡塔尔外的盘,制止出难题,之后展开安装的文本夹的DOSBox0.74 Options.bat文件,拉到最尾部,增加如下代码:

  在那之中CS为073F,IP为0102;就是说CPU当前要读取CS:IP即0x74F2处的命令,並且在debug中还彰显出了该内部存款和储蓄器单元中寄存的机器码,为呃。。0000,前面则为翻译的汇编指令。

  也可以将代码在DOSBox中输入,但这么做防止每便打开都要输叁次。
  命令中D为作为虚构盘的真正磁盘,:DOSBOX_SELF为自定义的文件夹,之后参与未有自带的debug.exe,将下载的debug.exe归入该文件夹,展开DOSBox输入debug就可以使用。

  -T命令可用来施行我们写入的命令,但不得不先让CS:IP指向欲试行的指令单元,每一次一条指令:

图片 12

 

  用r指令退换贮存器中的值,如:

  -E:改写内部存款和储蓄器中的源委,大器晚成种是形如 e 1000:0 回车,会有下风流洒脱行每一个字节值,'.'前面从来输入纠正值,空格不更正或三回九转下贰个,回车截至;第三种形如 e 1000:0  "fdfd"   "dfds"  12  121;用-奥迪Q5可查看;但写入的是机器码如:b8 01 00 (mov ax,0001)、b90200(mov cx,0002卡塔 尔(阿拉伯语:قطر‎、01c8(add ax,cx卡塔尔,-d命令不恐怕展现代码,能够用-u命令查看(形如u  1000:0卡塔 尔(阿拉伯语:قطر‎

がんばって

版权声明:本文由澳门新葡亰平台游戏发布于网络操作,转载请注明出处:16位汇编复习,汇编语言学习