导航:首页 > 软件知识 > 如何定义一个汇编程序段

如何定义一个汇编程序段

发布时间:2023-06-01 17:50:06

⑴ 汇编程序段中数据段的定义

DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2EQUSTR1+CN-5
DATAENDS

CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVDX,OFFSETSTR1
MOVAH,9
INT21H
MOVSI,OFFSETSTR1
MOVDI,OFFSETSTR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
MOVDX,OFFSETSTR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART


教材中有详细的介绍,请认真阅读,多复习。
es是附加数据段段地址,程序中是将数据段和附加数据段同段。
str1是21个字节。
cn和str2在这里都是常量。
数据段中只定义了存储区str1。(但又将str2当存储区使用,这种用法少见,不要学!)

============================================================
以上操作的问题,str2并未申请缓冲区,在执行时有越界的风险!
============================================================
以下是规范的程序:
DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2DBCNDUP(?)
DATAENDS

CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
LEADX,STR1
MOVAH,9
INT21H
LEASI,STR1
LEADI,STR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
LEADX,STR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART

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

这样定义的:

子程序名 PROC NEAR|FAR

拆则 .

.

RET

子程序名 ENDP

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

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

(2)如何定义一个汇编程序段扩展阅读:

注意事项

一、子程序调用指令

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

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

[NEAR PTR]可以省略。

二、返回指令

格式:RET [N]

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

阅读全文

与如何定义一个汇编程序段相关的资料

热点内容
哪里找spss数据 浏览:346
申请的代理怎么注销 浏览:682
哪些产品有祛斑的效果 浏览:448
美国农业市场怎么样 浏览:348
换机联系方式怎么数据迁移 浏览:580
怎么注册一个品牌产品 浏览:263
抗衰老洁面产品的共性有哪些 浏览:516
北讯怎么交易不了啊 浏览:757
多道程序环境什么意思 浏览:35
有哪些奇葩的自热产品 浏览:538
有什么净水产品 浏览:478
做代理入股需要注意什么 浏览:933
什么样的数据是爆款视频 浏览:207
泰国宵夜市场有什么 浏览:594
如何核实学生餐卡的信息 浏览:977
数据库系统为什么不属于系统程序 浏览:867
白银人才市场在什么位置 浏览:502
东莞有哪些出口越南产品 浏览:292
如何开发海产品和农产品 浏览:431
c盘哪些数据可以删 浏览:619