zoukankan      html  css  js  c++  java
  • 2017.10.18 微机原理与接口----汇编语言语法和DOS功能调用

    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

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

      ·字符串显示

  • 相关阅读:
    Majority Element
    Longest Increasing Subsequence
    Count Primes
    Valid Parentheses
    Largest Rectangle in Histogram
    Linked List Cycle II
    Linked List Cycle
    Evaluate Reverse Polish Notation
    Longest Valid Parentheses
    适配总结
  • 原文地址:https://www.cnblogs.com/qichunlin/p/7685820.html
Copyright © 2011-2022 走看看