寄存器(内存访问)网络操作系统_第1页
寄存器(内存访问)网络操作系统_第2页
寄存器(内存访问)网络操作系统_第3页
寄存器(内存访问)网络操作系统_第4页
寄存器(内存访问)网络操作系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 寄存器(内存访问)3.1 内存中字的存储内存中字的存储nBigEndion :IBM370、PDP-10、Motolora 微处理器系列、绝大多数RISC处理器nLittleEndion :PDP-11、 VAX 、Intel微处理器系列(80X86构架)内存中字的存储n字节单元n字单元问题3.13.2 DS和address nmov ax, 1000hnmov ds, axnmov al, 08086 CPU 不支持将数据直接送段寄存器的操作问题 3.23.3 字的传送nmov bx, 1000hnmov ds, bxnmov ax, 0nmov 0, cxn问题3.3n问题3.43

2、.4 mov、add、sub 指令nMov mem, acnMov ac, memnMov reg, regnMov reg, memnMov mem, regnMov reg, datanMov mem, datanMov segreg, regnMov segreg, memnMov reg, segregnMov mem, segreg常见缩写nreg 寄存器nsegreg 段寄存器nidata 立即数nmem 内存单元nac 累加器(AX)MOV(move)n把一个字节或字的操作数从源地址传送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;

3、立即数送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存演示演示MOV指令立即数传送mov cl,4;cl4,字节传送mov dx,0ffh;dx00ffh,字传送mov si,200h;si0200h,字传送mov bvar,0ah;字节传送;假设bvar是一个字节变量,定义如下:bvar d

4、b 0mov wvar,0bh;字传送;假设wvar是一个字变量,定义如下:wvar dw 0明确指令是字节操作还是字操作明确指令是字节操作还是字操作MOV指令寄存器传送mov ah,al;ahal,字节传送mov bvar,ch;bvarch ,字节传送mov ax,bx;axbx,字传送mov ds,ax;dsax,字传送mov bx,al;bxal,字节传送 寄存器具有明确的字节和字类型寄存器具有明确的字节和字类型MOV指令存储器传送mov al,bx;alds:bxmov dx,bp;dxss:bpmov dx,bp+4;dxss:bpmov es,si;esds:si 不存在存储器向

5、存储器的传送指令不存在存储器向存储器的传送指令MOV指令段寄存器传送mov si,dsmov ax,ds;axdsmov es,ax;esaxds 对段寄存器的操作不灵活对段寄存器的操作不灵活MOV指令传送功能图解立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器非法指令的主要现象:n两个操作数的类型不一致n无法确定是字节量还是字量操作n两个操作数都是存储器n段寄存器的操作有一些限制非法指令两个操作数类型不一致在绝大多数双操作数指令中,目的操作数和源操作

6、数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令MOV AL, 050AH;非法指令,修正:;mov ax,050ahMOV SI, DL;非法指令,修正:;mov dh,0;mov si,dx非法指令无法确定是字节量还是字量操作当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明MOV BX+SI, 255;非法指令,修正:;mov byte ptr bx+si,255;byte ptr 说明是字节操作;mov word ptr bx+si,255;word ptr 说明是字操作非法指令两个操作数都是存储器8086指令系统除串操作指令外,不允许两个操

7、作数都是存储单元(存储器操作数)MOV buf2, buf1;非法指令,修正:;假设buf2和buf1是两个字变量;mov ax,buf1;mov buf2,ax;假设buf2和buf1是两个字节变量;mov al,buf1;mov buf2,al非法指令段寄存器的操作有一些限制8088指令系统中,能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活MOV DS, ES;非法指令,修正:;mov ax,es;mov ds,axMOV DS, 100H ;非法指令,修正:;mov ax,100h;mov ds,ax MOV CS, SI ;非法指令;指令存在,但不能执行add 和 su

8、b 指令nadd reg, idatanadd reg, regnadd reg, memnadd mem, regnsub reg, idatansub reg, regnsub reg, memnsub mem, regadd、sub 总结n双操作数指令n操作数不能是段寄存器3.5 数据段n数据段是我们编程时安排的,用来存放数据的内存段n在DS中存放数据段的段地址n问题3.5检测点 3.1n作为作业n要求: 必须独立完成。3.6 栈n栈是一种具有特殊的访问方式的存储空间。n后进先出 LIFO (Last In First Out)n栈的基本操作: 入栈、出栈3.7 CPU 提供的栈机制nC

9、PU 提供相关的指令来以栈的方式访问内存空间nPUSHnPOPn8086 CPU 的入栈和出栈操作都是以字为单位进行的。nmov x, 0123hnpush axnmov bx, 2266hnpush bxnmov cx, 1122hnpush cxnpop axnpop bxnpop cx假设将10000H1000FH这段内存作 为栈使用 问题:n问题1:CPU如何知道哪段内存空间作为栈空间使用?n问题2: CPU如何知道哪个单元是栈顶单元?n答案:SS中存放栈顶的段地址,任意时刻,SS:SP指向栈顶元素push指令的功能。例如:push axn1. sp = sp-2, SS:SP指向当前

10、栈顶单元,以当前栈顶前面的单元为新的栈顶n2. 将 ax 中的内容送入SS:SP指向的内存单元,SS:SP这时指向新栈顶。n注意: 8086 CPU入栈时, 栈顶从高地址向低地址方向增长。问题 3.6n栈空时,SP指向栈空间最高地址单元的下一个单元pop指令的功能。例如:pop axn1. 将SS:SP 指向的内存单元中的数据送入ax中。n2. SP = SP+2, SS:SP指向新的栈顶单元3.8 栈顶越界问题n当栈满的时候再使用push指令入栈,或栈空的时候再使用pop指令入栈,都将发生栈顶越界问题。nCPU不保证我们的操作不越界,也就是说,我们编程的时候应该自己注意越界错误的问题。3.9 push、pop 指令格式npush regnpop regnpush sre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论