汇编语言子程序是如何定义的?

汇编语言子程序是如何定义的?,第1张

这样扮蚂定义的:

子程序名 PROC     NEAR|FAR

             .

              .

            RET

子程序名 ENDP

子程序名相当于标号,表示本过拆则程的符号地址。过程有NEAR和FAR两种类型,FAR型的过程可供段间调用,NEAR型过程仅供段内调用。

在一个过程中,至少要有一条返回指令RET,它可以书写在过程中的任何位置,但是过程执行的的最后一条指令一定是RET。

扩展资料:

注意事项

一、子程序调用指令

格式:CALL   [NEAR PTR]    子程序名

CALL指令的两个作用,1.将断点地址(CALL指令的下一条指令地址)压栈保存,2.转去子程序执行。

[NEAR PTR]可以省略。

二、返回指令

格式:RET     [N]

指令旅缺棚作用:实现子程序执行完后返回主程序的指令。从堆栈栈顶d出一个字数据(段内调用)送入IP作为返回地址。N是立即数,执行完RET之后,再将SP增加N,也叫“平栈”。

1.将AX中的值以十六进制形式显示。

要求:主程序利用寄存器把AX的值传送给子程序。

在子程序中将AX中的值以十六进制形式显示。

=====================================

DATA SEGMENT

D1 DW 13276 数: 0~65535

DATA ENDS

------------------------------

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START:

MOV AX, DATA

MOV DS, AX

------------------------------

MOV AX, D1取来数字.

CALL DISP_AX

MOV DL, 'H'

MOV AH, 2

INT 21H 输出H

------------------------------

MOV AH, 4CH

INT 21H 返回DOS

------------------------------

DISP_AX:

MOV BX, 1616进制,要除16

MOV CX, 4 求4位16进制数.

ABC:

CWD将AX扩展到DX

DIV BX

PUSH DX保存余数到堆栈.

LOOP ABC

MOV CX, 4 显示4位.

ASD:

POP DX

CMP DL, 10

JB A48

ADD DL, 7

A48:

ADD DL, 48

MOV AH, 2

INT 21H 输出.

LOOP ASD

RET

------------------------------

CODE ENDS

END START

===========================

2.编写子程序,完成的功能是将DL中的2位十六进制数转换为对应ASCII码。

说明:入口参数AL=待转换的2位十六进制数

出口参数DX=转换后的ASCII码,(高字节对应高位、低字节对应低位)

举例:若AL=2AH,则DX=3241H。

0----9转换为30H----39H +30H

A---F转换为41H----4FH +30H+7H

------------------------------

AL_ASC_DX:

MOV AH, 0 要除16

MOV CL, 16求16进制数.

DIV CL

CMP AL, 10

JB A48

ADD AL, 7

A48:

ADD AL, 48

MOV DH, AL

CMP AH, 10

JB A482

ADD AH, 7

A482:

ADD AH, 48

MOV DL, AH

RET

------------------------------


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12315284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存