1 Star 7 Fork 0

bg7jws / ASM

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
formatCV 2.93 KB
一键复制 编辑 原始数据 按行查看 历史
本文简单描述将旧式masm书写方式转换为简式masm书写方式的方法。
因为旧式书写方式适用于MS masm 5.0之前,现在仍有些学校所采用的教材仍然以此为格式。
为了方便学生在见到简式书写方式后能够自己转换为旧式书写方式以满足虽然有些奇葩弱智,
但是很无奈的格式要求。
-------------------------------------------------------
.model small 这是简式书写的伪指令,声明小模式汇编,转换格式可以不管此行
.stack 200h 这是定义堆栈段,表示堆栈段使用200hbyte,这一行对应于以下的24-26行
.data 这是数据段的开始 8-10行对应于以下的20-23行
array dw 38 dup ('AA')
num dw 38
.code 这是代码段的开始
start: 对应于end start,这是程序的入口
mov ax,@data 这两句初始化数据段地址,数据段用的是.data来开始的,所以用@data
mov ds,ax
mov ax,4C00H 这两句调用dos中断21h的4ch功能返回操作系统
int 21h
;整段子程序可以放到这里
end start 这一句代码结束,并指明程序入口。如果有子程序,应该将子程序整段放在此语句之前。
--------------------------------------------------------
以下是旧式书写方式
DSEG SEGMENT 这四句相当于8-10行三句,因为简式书写不再需要短结束伪指令
array dw 38 dup ('AA')
num dw 38
DSEG ENDS
SSEG SEGMENT STACK 这3句相当于第7行一行,定义了堆栈段大小为100hbyte
DB 100H DUP(?)
SSEG ENDS
CSEG SEGMENT 这一句等价于第11行,代码段开始
ASSUME CS:CSEG, DS:DSEG, SS:SSEG 这一句仅用于此种格式,简式书写不写这一句,转换时在代码段segment伪指令后面加上。
START: 这一段等价于12-18行,代码段的主体。
MOV AX,DSEG 注意这一句和第13行有一点点不同,这里数据段的名字是DSEG所以就用DSEG。
MOV DS,AX
MOV AX, 4C00H
INT 21H
;整段子程序可以放到这里
CSEG ENDS 这一句是段结束,简式书写不需要,转换时,在每个段结束要有ends
END START ; 程序结束
--------------------------------------------------------
以上就是旧式masm书写方式和简式masm书写方式的转换方法,非常简单。
更复杂的,如果你已经写出了更复杂一些的程序,我相信你已经对两种书写方式有了更深的理解,
用不到这个说明,就可以在两种书写方式自由转换。
谢谢阅读。
Assembly
1
https://gitee.com/bg7jws/ASM.git
git@gitee.com:bg7jws/ASM.git
bg7jws
ASM
ASM
master

搜索帮助