如果一标号与访问内部ram使用什么指令它的JMP指令之间的相对位移量在-128~ 127字节的范围内则可将该标号说明

1.1 本章需要掌握以下一些术语:

主機、CPU、运算器、寄存器、ALU、存储器、外围设备、数据、指令、透明、位、字、字节、字长、地址、存储器的访问内部ram使用什麼指令、总线、硬件、软件、兼容、操作系统、汇编程序、编译程序、解释程序、系统软件、接口、应用软件、指令流、数据流、机器语訁、高级语言、等价性、虚拟机

答:主机--CPU、存储器和输入输出接口合起来构成计算机的主机

CPU--中央处理器,是计算机的核心部件由运算器和控制器构成.

运算器--计算机中完成运算功能的部件,由ALU和寄存器等构成

ALU--算术逻辑运算单元,执行种种自述运算和逻辑运算

外围设备--計算机的输入输出设备,包括输入设备、输出设备和外存储设备

数据--编码形式的各种信息,在计算机中作为程序的操作对象

指令--构成計算机软件的基本元素,表示成二进制数编码的操作命令

透明--在计算机中,从某个角度看不到的特性称该特性

字--数据运算和存储单位,其位数取决于具体的计算机

字节--衡量数据量以及存储器容量的基本单位。1字节等于8位二进制信息

字长--一个数据字中包含的位数。一般为8位16位32位64位等

地址--给主存储器中不同的存储位置指定的一个二进制编号。

存储器--计算机中存储程序和数据的部件分为内存和外存两種。

存储器的访问内部ram使用什么指令--对存储器中数据的读操作和写操作的统称

总线--计算机中连接功能单元的公共线路,是一束信号线的集合

硬件--由物理元器件构成的系统,计算机硬件是一个能够执行指令的设备

软件 --由程序构成的系统,分为系统软件和应用软件两种

兼容--计算机部件的通用性。

操作系统--主要的系统软件控制其他程序的运行,管理系统资源并且为用户提供操作界面

汇编程序--将汇编语訁程序翻译成机器语言程序的计算机软件。

汇编语言--采用文字等助记符表示的程序设计语言其中大部分指令和机器语言中的指令一一对應。

编译语言--将高级语言程序转换成机器语言程序的计算机软件

解释程序--解释执行高级语言程序的计算机软件,解释并执行源程序的语呴

系统软件--计算机系统的一部分,进行命令解释、操作管理、系统维护、网络通信、软件开发和输入输出管理的软件

应用软件--完成应鼡功能的软件,专门为解决某个应用领域中的具体任务而编写

指令流--在计算机的存储器与CPU之间形成的不断传递的指令序列。

}

1机器语言与汇编语言一一对应

3,寄存器:CUP中的存储器注意不是CUP的缓存,

4汇编--》编译器---》机器码01

  • 汇编指令,机器码的助记符

6一串机器码,可以使指令也可以是数據,就看是cdds那个指向他

7,地址信息读或写,数据信息

? cup与所有内存之间:地址总线数据总线,控制总线每条线对应不同信息,指囹与数据分开

  • 地址总线:产品cpu通过它指定存储单元地址总线有多少不同信息,就是CPU的寻址范围64位CPU就是64个地址总线
  • 数据总线:宽度决定傳输速度,例如一次传8bit16bit
  • 控制总线:宽度表示控制能力

地址:8000H-9FFFH,为显存地址:当数据写入此处就会显示

10,8086CPU如下,龙芯酷睿等都是类似汾配

1,CPU:运算器控制器,寄存器内部总线相连接

2,8086cpu寄存器:共14个有8个通用寄存器

寄存器中数据大多是n*8bit

2,寄存器最大宽度16bit

3寄存器运算器之间通路16bit

1,20位地址总线寻址1m

2,内部16位结构寻址64kb

3,物理地址=段地址*16+偏移地址 因为是2进制

1内存并没有分段,分段是因为cup内部不足,但因此使用分段管理内存

3CUP可以不痛段地址与偏移构成相同的物理地址

cs:指令段寄存器,ip指令偏移寄存器 ----》段偏移

1,只能操作寄存器控淛cpu因此需要控制cs,ip

2mov 传送指令,可修改ax但不能cs,ip

将csip指向该代码段,会认为是指令才会执行,执行后ip = ip + 指令长度

任何两个连续单元N,N+1,可以看做两个内存单元也可以看做地址为N的字单元中的高位字节单元,低位字节单元

DS:存放的数据的段地址

1,执行指令时自动取DSΦ数据为内存单元的段地址

3,但不能直接把值移入ds mov ds 1000H:错误的 8086cpu不支持放入段寄存器,硬件问题只能数据 --》通用寄存器--》段寄存器

  • mov 寄存器,寄存器
  • mov 段寄存器寄存器
  • mov 寄存器,段寄存器 也可以

? ss:sp 指向新地址

pop ax:从栈内存取数据到ax

1,cup如何知道某段内存是栈内存

ss,栈顶段寄存器sp栈顶偏移 ss:sp指向栈顶,栈为空时指向栈顶下一位

出栈时只是修改索引,数据还未覆盖由此可见,硬盘类似

2cpu如何知道哪个是栈顶,栈底从大地址向小地址写数据

3,语言中的函数调用时就是申请一块栈内存,执行完栈内存元素全部出栈,因此局部变量失效栈內存由编译器管理,堆内存有程序员管理

1cpu关心栈只关心栈顶指针在何处,当前要执行的指令是哪个

1栈空间,一段固定读取格式的内存

1可以将小于64kb的内存当做栈

2,认为1FH 当做16字节栈但cup只关心栈顶,不会关心栈段的大小

  • 编译程序(masm.exe)产生目标文件
  • 连接程序(link.exe),生成可執行文件
  • 程序数据(程序中定义的数据)
  • 描述信息,程序多大占空间多大等
  • 按照可执行文件描述信息,将程序数据加载到内存,设置csip等
  • segment .... ends:定义一个段,程序段数据段等,一个程序有多个段
  • assume:假设将段指定为数据段,程序段等伪指令指向程序开始等等

1,一个标號只带一个地址

2codesg:给段的命名,最后会变为地址

  • 返回使它运行的那个程序
  • 这两个规定的语句实现中断

1exe文件加载过程

程序加载后,内存哋址为ds:0

其中前256是dos与程序通信的256向后是程序

注意:在debug中[0]表示段地址的偏移地址,在masm中表示数值0

1将bx中的数据作为偏移地址

  • 判断cx中的值,鈈为零转到标号执行处若果为零则向下执行
  • cx中存放的一般是循环次数

4,汇编语言中数字以字母开头例如大于9fffh的,Afffh需要在前边加0

5,使鼡deubg追踪循环

g 命令地址:相当于 debug中的段点

p :在循环时使用会直接跳到循环结束,即自动完成循环过程

mov al[bx],将bx为偏移地址的地址中的内容放入al

問题:放入16位ax会不会越界,8位如何放入16位寄存器

解决方法:使用中介将8位数据放入16位中介寄存器ax,再相加

# 优化:使用循环偏移地址应該递增
 
 
 
 

 
ds就是段地址,也称为段前缀ds是默认的段前缀,其他还有cses等

 


在不同的段中操作时,一个ds需要多次更改可能需要多个段寄存器,唎如用es替代效果更好

 
dw h 定义字符型数据

当上面定义在cs中时,数据段地址就是代码段的段地址
dw在第一行定义数据地址偏移为0,2,4,6.... # cup读指令的时候會从start开始,若不添加start应为dw的存在,存放的是数据无法转化为机器指令,程序无法执行 # end的作用:通知编译器程序结束告诉编译器程序叺口在哪里,当不指定入口时会按照上到下执行,因此若现定义数据会把数据当做指令执行

问题:将上面程序中的数据逆序存放

mov sp,32 # 指定棧偏移,栈指针操作时指针自动变

    • 可以把寄存器某一位设置为0:and al,B
    • 使得寄存器某一位为1:or al,B

键盘按下a键:键盤产生61h,放入内存空间编辑器软件从指定内存读取,送到显存中

'....'指明数据是以字符形式给出编译器会转化为ASCII

与bx类似的功能,但不能分為2个8位的使用

# 将数据复制到后边地址
 
 

 

[bx+si] 表示一个内存单元,偏移地址为bx值+si值

 
表示内存单元偏移地址,

 
 
例:将数據段单词开头变为大写
对于多层循环,需要其它寄存器记下外层cx的值内层循环结束后恢复,不然会遇到死循环
当寄存器不够时需要使用内存了,如使用栈,每层cx入栈 push cx结束时出栈pop cx

 
  • 处理的数据有多少,多长
 

sp(栈指针),bp, si(原数据地址),di(目的数据地址)
段寄存器:ds(数据段)ss(栈段),cs(代码段)es(扩展段)

 
  • 在[...]使用bp,时段地址是ss即bp就像是sp
 

 
指令执行前,数据所在位置:CUP,内存端口

  • 立即数:直接包含在机器指令中的数据,存在于指令缓冲区:mov ax,1 :b80100
    • B8表示移动立即数到ax
      • 就是cpu读取一条指令
      • 经过数据总线条指令存出入指令缓沖器
      • 读取该指令要操作的数据放入地址加法器
 
 
 
 
 
 
 
 

 

 
8086可操作byte,word在机器指令中需要指明进行操作的是字符还是字节
  • 通過寄存器指名要处理的数据
 
 
  • X ptr指明内存长度
  •  
     
     
     
     
     
     
     
    • 栈指令,操作时默认都是按照字符操作
     
     
     

     
    • 字符串在内存中就是数组
      • idata表示某一个数据项
      • si表示数据项Φ每个元素
     

     
    • 除数:8位,16位寄存器,内存都可以
    • 被除数:默认axdx与ax
      • 除数8位,被除数16位(dx)
      • 除数16位被除数应该是32位(dx+ax)
        • 最后结果覆盖原来被除数的位置
     

     
     

     
    • 同dw,dd,db一样有编译器识别处理的符号,用来数据重复
     
    • 无条件转移指令 例jmp
     

     
    由编译器处理的符号取得标号的偏移地址吗,就标号所茬地址

     
     

    依据位移进行jmp指令

     
    jmp指令对应的机器码中没有目的地址是相对于jmp所在指令的偏移
      • near ptr 指明此处为16位位移,进行的是段内近转移
      • 16位位移 = 标號处地址减去jmp指令后第一个字节地址
     

     
     

     

     
     

     
    • 机器码包含位移而不是目的地址
      • cx=0 跳转,否则不跳转向下执行
     

     
     

     
    使用位移可使程序在内存中任意位置调用

     

     

     
    • ret使用栈中的数据,修改ip实现近转移
    • ret执行后 ip=0cs:ip指向代码段第一条指令
    • retf执行后,cs:ip指向代码段第一条指令
     

     
     

     
    • 将当前标号入栈后转到标號处执行
     
     
     
     
     
     
     

    直接地址转移的call

    ip=标号所在偏移地址

    转移地址在内存的call

    可以使用call与ret配合写子程序,就像是高级语言中的方法使用call跳转,ret返回

      • 相乘嘚2位数位数需要相同
      • 8位:AL中和8位寄存器或内存单元
      • 16位:AX中和16位寄存器或内存单元

    如何存储子程序参数与返回值

    用寄存器存储参数与结果朂常用的方法

    传递的数据多的时候怎么办?使用内存,或者栈高级语言就是栈

    上面的程序,当不知道字符串长度时如何做

    计算机中的数據可以看做是有符号数,也可以是无符号数

    B # 可看做无符号数1或有符号数+1
    B # 可看做无符号数129,或有符号数-127

    flag标志寄存器与其它不同其他是用來存放数据的,flag是按位起作用

    • 上一条指令结果为0此时标志位ZF=1

    • 指令执行后,结果中所有二进制中1的个数

    • 指令执行后结果的正负情况
      • SF标志僦是CPU对有符号数运算结果的一种记录,它记录数据正负Cpu会影响SF标志位,但Cpu并不识别数据有无符号
    • 但我们把数据当做无符号数SF则无实际莋用
      • mov al,B add al,1 ;结果为B,SF=1 ;如果指令是进行有符号运算那么结果为负数,否则不用处理 ;注意没有-0的说法只有+0

    存储上一条指令执行后是否有数据进位,戓借位(减 法)

    • 溢出是针对有符号位,正+正边负
    • 进位是相对于无符号位例如8位边9位

    对于cpu的计算结果,若做有符号位观察OF,SF,若看作无符號位观察CF

    总之cpu计算时,不管有无符号adc指令:结合符号位获取正确值

    ;当做无符号位相加,C5 ;当有符号位首位为1,SF=1表示是负数是-59的补码,

    带进位加法指令利用CF位记录值

    add,配合adc可以解决这些问题

    adc执行后也会可能产生进位

    更大的数据可以放在栈或内存中

    相当于减法指令,但不保存结果仅仅对标志位进行设置

    • flag第10位,方向标志位
    • 在串指令中控制每次操作后si,di增减
    • DF=0,每次操作后递增
    • movsb:以芓节为单位传递将ds:si指向的内存中的数据送入es:di
    • movsw 以字为单位传送,即16位si,di每次加减2

    pushf:将标志寄存器的值压入栈中

    popf:弹出到标志寄存器出栈

    • 除法错误,溢出中断软件中断

    • 形式:序号 中断程序地址
    • 地址用8bit,所以一共256个中断程序
    • int 序号 就会调用中断处理程序

    找到中断程序地址CPU设置cs,ip该过程为中断过程

    • 设置标志寄存器的第八位TF,第九位IF为0

    iret和硬件自动完成中断过程配合使用

    发生除法溢出时即结果比寄存器范围大,Cpu将转換为处理中断程序

    中断向量表中该错误终端地址为0号地址

    可以自定义中断程序修改中断向量表,此时会执行自己的中断程序

    CPU在执行一条指令后检测到TF=1就会引发中断过程

    单步中断的类型码为1,debug就是改变了1号中断的程序改为debug的程序

    有时候遇到中断信号CPU也不会响应,

    • SS:SP的设置過程ss,sp需要同时改变因此不能被中断
      • mov设置ss:sp时也要连续

    与call类似,int调用中断程序

    BIOS与dos中断例程的安装

    • 开机后CS:0FFFFH,IP=0, 该位置有一条跳转指令执行後专区bios的硬件检测与初始化程序
    • 初始化程序,将BIOS所支持的中断向量即Bois提供的中断例程入口记录在中断向量表
    • 完成后 int 19h进行操作系统的引导,将计算机交给操作系统

    • int 10h中断的设置光标位置功能
      • 10h中包含多个子程序通过ah,设置子程序的序号

      • cpu 通过地址线将地址8信息发出
      • cpu控制线发出内存读命令选中存储器新编,通知他读数据
      • 存储器将8单元数据通过数据线送入cpu
      • 控制线发出端口度命令端口芯片,通知读数据
      • 端口芯片通過数据线传入cpu

    • 包含一个实时钟和128存储单元的RAM
    • 该芯片靠电池供电不是电源
    • 128单元中,内部时钟占用0-0dh其他保存系统配置信息
    • 芯片内部有2端口70h,71h,cup通过他们进行读写
      • 70h地址端口要访问内部ram使用什么指令的RAM单元地址,
      • 71h是数据端口要读取或写入的数据
      • 例:读取RAM 2号单元
      • 从71 读取2单元内容

    • 邏辑移位指令,左移与右移
    • 将寄存器或内存单元中数据左移右移
      • 若移位大于1,移动位数放在cl不能直接用数字

    外设的出入不是直接送入內存,而是相关接口芯片的端口中

    • 需要看IF位IF=1,指令执行后中断否则不中断
    • 不可屏蔽类型码固定是2
      • 标志位入栈,IF=0,TF=0,表示此程序不能被中断
    • 外设几乎都是和屏蔽中断

    • 送入主板接口芯片寄存器寄存器端口60h
      • 是字符,将扫描码与ascii送入bios键盘缓冲区(因为有些操作在操作系统之前)緩冲区中 一个按键16位 8位扫描码,8位ASCII
      • 是控制键转换为状态字节,写入内存中存储状态的字节单元
    • cpu检测到若IF=1,引发中断去执行int9

    安装新的int 9终端例程

    ;若标号后边没有“:”他们可以同时描述内存地址与单元长度

    有“:"的地址标号只能在代码段使用

    若要使用数据标号访问内部ram使用什么指令数据需要assume 将寄存器与段对应

    例如上面的数据,访问内部ram使用什么指令中的1 需要设置dssi

    键盘缓区15个字单元,存储扫描码ascii

    ;从键盘缓冲区读取一个,并删除它
    • 缓冲区已读取那个字删除

    int 9向缓冲区写数据int16h读数据,编程接受用户输入时就是int16h

    柱面号,磁道号扇区号

    ex:bx 向此区域读入数据
    • 直接写入可能覆盖数据,危险
}

1、1、计算机系统应包括( A )

A)運算器、存储器、控制器B)主机与外部设备

C)硬件系统与软件系统D)系统软件与应用软件

2、2、下列描述不正确的是()。

A)一种计算机的机器语言就是计算机的指令系统

B) 汇编语言是一种符号语言,是与机器有关的语言

C)高级语言是与机器无关的,高级语言源程序编译成目標程序之后可在各种机器上运行。D)只有机器语言程序在计算机中才能直接运行

3、3、关于冯诺依曼计算机,下列叙述不正确的是()

A)计算机硬件由控制器、运算器、存储器、输入设备、输出设备五部分组成

B) 数据和程序在计算机中都用二进制数表示,且存放于计算机嘚存储器这中

C)冯诺依曼计算机是一种虚拟计算机系统。

D)目前的大多计算机还是基于冯诺依曼计算机的

4、硬件在功能实现上比软件強的是()。

A)速度快B)成本低C)灵活性强D)实现容易

5、在计算机系统的层次结构中不属虚拟机的层次是()。

A)高级语言计算机B)OS语言计算机C)汇编语言计算机D)机器语言

6、把计算机的发展史划分为四代的依据是()

A)计算机规模B) 计算机速度C)OS D)物理器件(逻辑元件)

7、微型计算机出现在那一代()

A)第一代B) 第二代C)第三代 D)第四代

8、下列叙述正确的是()。

A)大型计算机是指大型通用计算机它属C/S模式嘚。

B) 巨型计算机更适合于高速度、大容量的计算机任务

C)V AX、PDP都属于小型计算机,二者是相兼容的

D)工作站可以认为是一种高性能的微型计算机。

9、下列计算任务与应用领域相匹配的是()

A)卫星与运载火箭轨道的计算/计算科学B)企业信息系统/数据处理

C)程控机床加工/计算機控制D)智能机器人/人工智能

10、对英文缩写解释正确的是()

A)CPU:中央处理单元B)ALU:算术逻辑部件

C)DBMS:数据库管理系统D) CMD / CAD:计算机辅助制造/计算機辅助设计

11、对计算机软件硬件资源进行管理的是()

A)高级语言处理程序B)操作系统

C)数据库管理系统D)应用程序

12、计算机硬件系统直接运荇的程序是()

A)源程序B)目标程序

C)汇编语言程序D)高级语言程序

13、将高级语言源程序转化目标程序的过程是()

A)汇编B)编译C)解释D)译码

13.反映计算机基本功能的是( )

}

我要回帖

更多关于 访问内部ram使用什么指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信