80x86汇编语言编程:宏指令

用 80x86 汇编语言编写程序时,可以使用微软推出的软件 MASM.EXE 来进行编译。


这个软件的名称,第一个字母是“M”,它代表了“宏汇编”的意思。


使用这个编译软件,就允许我们自己编写“宏指令”了。


宏指令和子程序很像。


使用子程序时,经过编译后,子程序的代码是独立存在的,可以由主程序反复的调用,整个程序比较简短。


使用宏指令时,编译后的产生目标程序很长,因为在编译的时候,软件会把宏指令的代码插入到“宏调用”的位置。


代码较长,换来的是执行速度的提高,因为省去了子程序调用、返回的操作。



现在,很多人都是利用 C 语言编程,因为 C 语言带有很多的函数库,基本就已经可以满足初级需要了。


如果利用宏指令概念和方法,我们也就可以编写自己的宏指令库,调用的时候,使用自定义的宏指令,这也就是相当于自己创作了一种新的语言。


呵呵,汇编语言,处处都涉及到计算机的内部,以至于现在没有多少人能够弄这个。


下面介绍一个关于宏的实例,其中完整的包括了:宏定义、参数引用、宏调用。


如果读者有兴趣,再看看编译后的列表文件,还会看到“宏展开”的现象。



题目:在数据段建立本班学生档案(包括姓名学号),编写根据学号查找姓名的程序。


要求:通过输入学号,输出对应的学生姓名。


做而论道编写的程序如下。


;---------------------------------

;宏定义


CHA MACRO  NUMB     ;宏名称以及参数


    LEA  DX, STRING1

    MOV  BL, NUMB   ;取参数

    MUL  BL

    ADD  DX, AX

    MOV  AH, 9

    INT  21H

ENDM                ;宏定义结束

;---------------------------------

DATA SEGMENT        ;数据段


    STRING1  DB  'Zhang san $'

CHANG  EQU  $ - STRING1

    STRING2  DB  'Li si     $'

    STRING3  DB  'Wang er   $'

    STRING4  DB  'xiao hong $'

    STRING5  DB  'fang fang $'

    STRING6  DB  'ming ming $'

    STRING7  DB  'bing bing $'


DATA ENDS

;---------------------------------

CODE SEGMENT         ;代码段


    ASSUME  CS:CODE, DS:DATA


START:

    MOV   AX, DATA

    MOV   DS, AX


    MOV   AH, 1

    INT   21H        ;INPUT: '0' ~ '6'


    AND   AL, 0FH    ;AL = 0~6


    CHA   CHANG      ;宏调用


    MOV   AH, 4CH    ;结束程序

    INT   21H

CODE ENDS

    END   START

;---------------------------------


为了简明起见,程序中没有编写针对误输入而排除错误的程序段。


题目链接:http://zhidao.baidu.com/question/510078955.html


提问者评价:谢谢!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值