4.1 汇编语言中的基本数据

·标识符

·常数

·变量具有三个属性:

(1)段地址(SEG):变量所在段的段地址

(2)偏移地址(OFFSET):变量所在段内的偏移地址

(3)类型(TYPE):每个变量所占据的字节数

·标号

  它是可执行指令语句地址的符号表示,即用标识符来表示地址。

它可作为转移指令和调用指令的目的操作数,以确定程序转移的目的地址。

标号具有3个属性

(1)段地址(SEG):与标号对应的指令首字节所在的段地址;

(2)偏移地址(OFFSET):与标号对应的指令首字节所在的偏移地址;

(3)类型(TYPE):标号的类型属性有两种,NEAR和FAR类型;其中NEAR是近标号,只能在本段内使用;FAR是远标号可以在段间使用

4.2 伪指令语句

  数据定义、标识符赋值与解除、段定义、过程定义、程序开始与结束、

方式定义、结构定义、分组、其他等九种伪指令语句。

·数据定义伪指令语句(一共5条)也叫助记符

(1)DB:定义字节数据以及字符串,规定每个操作数占用一个字节,字符串的每个字母也占用一个字节;

(2)DW:定义字数据,规定每个操作数占用2个字节;

(3)DD:定义双字数据,规定每个操作数占用4个字节;

(4)DQ:定义4字数据,规定每个操作数占用8个字节;

(5)DT:定义10字节数据,规定每个操作数占用10个字节;

  指令格式:

    变量名    助记符     操作数       ;注释

    变量名    助记符    n DUP(操作数)    ;注释

注意: #变量名是一个用标识符表示的符号地址。其值等于助记符后第一个操作数的第一个字节的偏移地址值;

    #助记符有DB、DW、DD、DQ、DT五种伪指令;

    #操作数可以是常数、变量、表达式、字符串、?(表示不确定的数)或标号;

    # n DUP( )用来定义数组,把括号中的个操作数重复存放n次;

·标识符赋值与解除伪指令(共有4条)

(1)等值伪指令(EQU)

指令格式: 标识符    EQU    操作数

功能:用来给操作数定义一个标识符,程序中用到EQU左边的标识符时可用右边的

   操作数代替,在同一程序模块中,一经定义就不能重新定义。

(2)等号伪指令语句“=”

指令格式:标识符=操作数

功能:跟EQU语句类似,区别在于EQU左边的标识符不允许重复定义,而用“=”伪指令语句定义的标识符可以重复定义

(3)解除伪指令语句PURGE

指令格式:PURGE  标识符1,标识符2,标识符3......

功能:若标识符1,标识符2已经用EQU定义过,而以后不再使用了,可以用伪指令语句PURGE来解除,之后就可以重新定义

(4)别名定义伪指令

指令格式:别名  LABEL   类型属性

功能:给已经定义的变量或标号取另一个名字,并可重新定义他的类型属性

·段定义伪指令语句(共有2种)

  存储器的物理地址由段基址和偏移地址组合组成。

(1)段结构定义伪指令语句(SEGMENT.....ENDS)

  指令格式:段名 SEGMENT 定位类型    组合类型    ‘分类名’

          逻辑段内容

       段名 ENDS

  功能:将一个逻辑段的内容定义成一个整体

  

(2)段分配伪指令语句

   在8086CPU系统中存储器采用分段结构,各段最大容量为64KB。只允许4个逻辑段同时有效。

  指令格式:ASSUME CS:段名,DS:段名,SS: 段名,ES:段名

  功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系

·过程定义伪指令语句

  过程也叫子程序。

指令格式:过程名    PROC   属性

       过程内容

       RET

      过程名 ENDP

功能:定义一个由主程序可以用CALL指令调用的过程

  过程名是给所定义过程取的名字,不可默认。他是子程序的入口。

·程序开始与结束伪指令语句

  (1)目标模块命名伪指令

    格式:NAME   程序名

       TITLE   文本名

功能:为源程序目标模块赋一个程序名

  (2)定位伪指令语句

  格式:ORG  表达式

功能:给汇编语言程序设置指令位置指针,给出改定位伪指令下一条语句

·方式定义伪指令

  汇编操作方式有两种操作方式

    格式:.8080    .386

  功能:确定汇编程序的操作方式

4.3 汇编语言中的表达式

  表达式由运算对象和运算符组成。运算对象可以是常数、变量、标号。运算结果可以是常数,

也可以是存储器中的地址,若该地址中存放的是数据则称它为变量,若该地址中存放的是指令则称它是标号。

  汇编语言中有6类运算符号

 (1)算术运算符(7种):+、-、*、/、取模运算(MOD)左移(SHL)、右移(SHR)

 (2)逻辑运算符(4种):与(AND)、或(OR)、非(NOT)、异或(XOR)

 (3)关系运算符:相等(EQ)、不等(NE)、小于(LT)、大于(GT)、小于或等于(LE)、大于或等于(GE)

 (4)分析运算符:

    ·OFFSET

    格式:OFFSET变量或标号

    功能:OFFSET返回标号或变量的偏移地址值

  例如:用OFFSET返回标号或变量偏移地址的表达式

    DATA SEGMENT

      ....

    DAT1 DB 81H

    DATA ENDS

    CODE SEGEMENT

       MOV SI,OFFSET LAB1

       ...

    LAB1:MOV BX,OFFSET DAT1

      ...

    CODE ENDS

  ·SEG

    格式:SEG 变量或标号

    功能:SEG返回标号或变量的段基值

  ·TYPE

    格式:TYPE 变量

    功能:TYPE 可加在变量或标号前,返回变量的类型属性或标号的距离属性

  ·LENGTH

    格式:LENGTH  变量

    功能:LENGTH只有当变量中使用DUP时,才返回该变量所含数据的个数,而对其他变量返回1

  ·SIZE

    格式:SIZE  变量

    功能:SIZE运算符加在变量前,返回该变量包含的总字节数

*重点:三者的关系   SIZE=LENGTH*TYPE

 (5)修改属性运算符

 (6)其他运算符

  4.4 DOS系统功能调用

·DOS包含功能调用有:外部设备管理、文件读写、文件管理、目录管理、内存分配

(1)程序结束软中断

  三种实现方法:

      INT 20H-----中止当前进程,关闭所有打开的文件,清除磁盘缓冲区,返回控制台  

      INT 21H---{无返回程序结束、程序结束并驻留和带返回程序结束}

        无返回程序结束的调用格式: MOV AH,0   INT 21H

        (入口参数:ah=0)

        程序结束并驻留的格式:MOV AH 31H   MOV L,1  MOV DX,400H  INT 21H

        (入口参数:ah=31h是功能号,al=1,是返回号,dx=400h是保留从程序段前缀开始的内存长度(即2^4),上述程序返回1,保留前缀内存16kb

      INT 27H----调用格式:MOV DX XX  INT 27H

        (入口参数:dx=xx是设置驻留程序的长度)

(2)屏幕显示功能软中断

  ·单字符显示:2号和6号功能调用可实现将字符结果显示在屏幕上。2号功能调用在显示期间可以检测Ctrl+Break,6号不能

    MOV DL,'*'

    MOV AH,2

    INT 21H

调用结果在屏幕上当前光标处显示‘*’

  ·字符串显示

2017.10.18 微机原理与接口----汇编语言语法和DOS功能调用的更多相关文章

  1. 汇编语言常用的DOS功能调用

    今天掌握了汇编语言常用的DOS功能调用,现在列出来供参考. 1.单字符输入(1号调用) 格式:MOV AH,1 INT 21H 功能:达到输入状态,从键盘上输入字符的ASCII码送入AX中,并送显示器 ...

  2. 80x86/Pentium微机原理及接口技术-微处理器-学习笔记

    80x86/  Pentium微机原理及接口技术 1.    计算机基础... 1 1.1常用术语... 1 1.2计算机中数与编码的表示方法... 1 1.2.1进制表示及进制转换... 1 1.2 ...

  3. 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.

    Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...

  4. 2017.11.1 微型计算机原理与接口技术-----第七章 中断系统与8237A DMA控制器

    第七章 微型计算机原理与接口技术-----中断系统与8237A DMA控制器 (1)数据传送的两种方式:中断方式和直接存储器存取方式(DMA):中断是微处理器与外部设备交换信息的一种方式:DMA是存储 ...

  5. 单片微机原理P0:80C51结构原理

    本来我真的不想让51的东西出现在我的博客上的,因为51这种东西真的太low了,学了最多就所谓的垃圾科创利用一下,但是想一下这门课我也要考试,还是写一点东西顺便放博客上吧. 这一系列主要参考<单片 ...

  6. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  7. 对于最近的一些日常总结by520(17.10.18)

    ---天天考试,各种题型都有,学到了很多新的知识,也发现了自己的许多不足---1.首先,自己的搜索需要加强,特别是广搜,10.18的T1裸广搜没有做对.2.数学的思维和一些逻辑问题需要加强,然后就是要 ...

  8. 实现WebMvcConfigurer接口扩展Spring MVC的功能

    前言: 先查看WebMvcConfigurer接口中都定义了哪些内容 public interface WebMvcConfigurer { default void configurePathMat ...

  9. 《嵌入式系统原理与接口技术》——嵌入式系统接口应用基础

    本文为我负责编写的电子工业出版社出版的<嵌入式系统原理与接口技术>一书第七章部分,这里整理的仍然是修改稿,供需要的同学参考,本书为普通高等教育"十二五"规划教材,电子信 ...

随机推荐

  1. HandlerInterceptor拦截器使用总结

    简介 SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对请求进行拦截和处理. 常见应用场景 1.权限检查:如检测请求是否具有登录权限,如果没有直接返回到登陆页面. ...

  2. 可输入的 Combox(DropDownList)

    aspx页面中需要可以输入的combox,在网上找了一个js的插件,效果图如下:

  3. 深入学习webpack(二)

    深入学习webpack(二) 在深入学习webpack(一)中,我通过一个例子介绍了webpack的基本使用方法,下面将更为系统的学习webpack的基本概念,对于一门技术的掌握我认为系统化还是很重要 ...

  4. ArrayList代码分析

    集合算是java中最常用的部分了,阅读该部分jdk代码可以让我们更加清楚的了解其实现原理,在使用时也能心中有数,有利于写出高质量的代码. ArrayList 底层数组实现,初始长度10,超过长度后的自 ...

  5. SSH密钥登录原理

    Client 发送请求 login 请求 --> Server 接受请求 --> 根据 authorized_key 文件中的对应 Client 的 ip 地址的公钥对一串随机数进行加密 ...

  6. Linux 命令-1

    1.除了/之外,所有的字符都合法,有些字符最好不要用 2.以.开头的文件将被隐藏.和window的区别 3.大小写敏感 4.命令格式: 命令 -选项 参数   例如: ls -la /etc  ,选项 ...

  7. 简单的JS统计静态网站访问次数

    最简单的静态页面刷新 <html> <head> <meta http-equiv="Content-Type" content="text ...

  8. 乐蜂网SALES倒计时原码展示

    这是一个基于jquey写的倒计时.当然代码有点小改动,只是改了一下展示效果. 在静态页添加显示倒计时的容器,并引用下面脚本,代入时间参数即可使用. timeoutDate——到期时间,时间格式为201 ...

  9. Java反射破坏单例模式

    今天电话面试的时候问到了,Google了一下 原出处: http://blog.csdn.net/lws332969674/article/details/8125893 一. Java中的反射技术可 ...

  10. poj 1947 树形背包

    重做这道题 http://blog.csdn.net/woshi250hua/article/details/7632785 http://blog.csdn.net/shuangde800/arti ...