王爽《汇编语言》第三版 第八章 数据处理的两个基本问题

引言

  本章中,我们就要针对8086CPU对这两个基本问题进行讨论。虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理器都存在。

  reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;

  sreg的集合包括:ds、ss、cs、es。

8.1 bx、si、di、bp

  在8086CPU 中,只有这4个寄存器(bx、bp、si、di)可以用在“[…]” 中来进行内存单元的寻址。

  在“[…]” 中,这4个寄存器(bx、bp、si、di)可以单个出现,或只能以四种组合出现:bx和si、bx和di、bp和si、bp和di。

  只要在[…]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中。

8.2 机器指令处理的数据所在位置

  指令在执行前,所要处理的数据可以在三个地方:CPU内部、内存、端口。

  

8.3 汇编语言中数据位置的表达

  汇编语言中用三个概念来表达数据的位置。
  1、立即数(idata)
  2、寄存器
  3、段地址(SA)和偏移地址(EA)

8.4 寻址方式

  当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被称为寻址方式。

  

8.5 指令要处理的数据有多长?

  8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作。

  1.通过寄存器名指明要处理的数据的尺寸。

  2.在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。

  有些指令如push与pop默认了访问的是字单元还是字节单元。

  
8.6 寻址方式的综合应用

8.7 div 指令

  div是除法指令(division),使用div作除法的时候:

  除数     被除数商余数

  8位      16位(AX)    ALAH

  16位     32位(DX+AX)AXDX

8.8 伪指令 dd

  dd是用来定义dword (double word双字)型数据的。

8.9 dup

  dup是一个操作符,在汇编语言中同db、dw、dd 等一样,也是由编译器识别处理的符号。

  它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复。

  db 3 dup (0) 定义了3个字节,它们的值都是0,相当于 db 0,0,0。

  db 3 dup (0,1,2)定义了9个字节,它们是0、1、2、0、1、2、0、1、2,相当于 db 0,1,2,0,1,2,0,1,2 。

参考资料:《小甲鱼汇编零基础入门》

     《汇编语言》第三版

时间: 2024-10-21 08:33:28

王爽《汇编语言》第三版 第八章 数据处理的两个基本问题的相关文章

王爽汇编语言第三版第5章实验4

第(3)小题 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序.上机调试,跟踪运行结果. assume cs:code code segment mov ax,     cs       ;cs为程序入口的段地址,我们就是要从这里开始复制 mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,     cx        ;程序刚加载完成时,cx存放的是程序的大小,这里我不确定答案,我试过后看到mov ax,4

汇编语言学习第八章-数据处理的两个基本问题

本博文系列参考自<<汇编语言>>第三版,作者:王爽 计算机CPU进行数据处理包括两个基本的问题:1.数据在何处?     2.数据有多大?  本章作为一个前面内容的总结性章节,主要来说明这两个问题.我们定义两个符号reg和sreg.其中reg为寄存器,sreg为段寄存器 reg包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di sreg包括:ds,ss,sp,es 8.1  bx. si. di和bp 1.在8086CPU只有bx,

【汇编语言】(王爽著第三版)实验二

实验二 实验任务(一) 实验前要求我们将书本P74的程序段按理论分析,将结果进行填空.之后用Debug,将该程序段写入内存,逐条执行之后, 根据指令执行后的实际运行的结果填空如下. mov ax,0021 mov  ax , ffff mov  ds , ax mov  ax , 2200 mov  ss , ax mov  sp , 0100 mov  ax , [0]                       ;ax=3130 add  ax , [2]                 

王爽汇编第三版检测点10.5

(1)下面的程序执行后,ax 中的数值是多少? 1 assume cs:code 2 stack segment 3 dw 8 dup (0) 4 stack ends 5 code segment 6 start: mov ax,stack 7 mov ss,ax 8 mov sp,16 9 mov ds,ax 10 mov ax,0 11 call word ptr ds:[0] 12 inc ax 13 inc ax 14 inc ax 15 mov ax,4c00h 16 int 21h

王爽汇编第三版实验10

1. 显示字符串 1 assume cs:code 2 3 data segment 4 db 'Welcome to masm!',0 5 data ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 code segment 12 start: 13 mov dh,8 14 mov dl,3 15 mov cl,2 16 mov ax,data 17 mov ds,ax 18 mov si,0 19 call show_str

汇编语言 第八章:数据处理的两个基本问题

1.处理的数据在哪? 2.数据有多长? 以下理由reg表示寄存器,sreg表示段寄存器 reg有:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di sreg有:cs,ds,es,ss 8.1 bx,si,di 和 bp 1) [..]中只能使用这4种寄存器,其他的不可以 2) 只能有下列使用组合,其他的不可以 [bx],[bp],[si],[di],[bx+si],[bx+di],[bp+si],[bp+di]    可以+idata 3) 只要[.

第八章 数据处理的两个基本问题

一.bx.si.di和bp ①在8086CPU寄存器中,只有这四个寄存器可以用在"[....]"中来表示进行内存单元的寻址. ②在[....]中,这4个寄存器可以单个出现,或者只能以4种组合出现:bx和si.bx和di.bp和si.bp和di. ③使用bx, si, di表示偏移地址时,默认段地址在ds中可以加前缀es, cs,ss.只要在[....]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中,可以加前缀ds,es,cs. 二.机器指令处理的数据在什么地方 机

最强大的王爽汇编语言学习环境使用教程

最强大的王爽汇编语言学习环境使用教程 一.前言 这是采用VMwere Workstation 12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示.还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大.并且集成了适合王爽汇编语言学习的微软汇编语言编译器masm5和dos中最强大的文本编辑器 vim73 for DOS,这是一个支持彩色

Java 线程第三版 第八章 Thread与Collection Class 读书笔记

JDK1.2引入最有争议性的改变是将集合类默认为不是Thread安全性的. 一.Collection Class的概述 1. 具有Threadsafe 的Collection Class: java.util.Vector(List) 列表集合,通过索引操作. java.util.Stack(List) 继承自Vector,提供LIFO的顺序操作push进入,pop出元素. java.util.Hashtable(Map) 一个简单.无序的key与value的映射. java.util.conc