masm与nasm的搭建使用

nasm kali中apt install nasm即可

masm:

参考这两篇文章

文章一:https://www.cnblogs.com/dgwblog/p/11865850.html

文章二:https://www.cnblogs.com/zzu-general/p/7853822.html

masm:windows

nasm:linux

要注意nasm和masm的语法不一样,masm的asm文件不能用nasm编译。

 

 

 

 把asm文件放入masm文件夹中

在dosbox中完成挂载,输入masm回车

输入你要编译的asm文件

xxx.asm

再进行链接如图过程,最后运行exe

DATA1 SEGMENT
MES DB 'Show abcdef as hex:',0AH,0DH,'$'
SD DB 'abcdef'
COUNT EQU $-OFFSET SD
DATA1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA1
START:
MOV AX,DATA1
MOV DS,AX
MOV DX,OFFSET MES ;显示提示信息 问题1,如果用es就会乱码
MOV AH,09H
INT 21H
 MOV AH,4CH ;返回DOS
 MOV CX,COUNT
MOV SI,OFFSET SD
KUBOPIY:
MOV AL,DS:[SI]
 AND AL,0F0H ;取高4 位
 PUSH CX
MOV CL,4
 SHR AL,CL
 POP CX
 CMP AL,0AH ;是否是A 以上的数
 JB C2
 ADD AL,07H
C2: ADD AL,30H
 MOV DL,AL ;显示字符
 MOV AH,02H
 INT 21H
 MOV AL,DS:[SI]
 AND AL,0FH ;取低4 位
 CMP AL,0AH
 JB C3
 ADD AL,07H
C3: ADD AL,30H
 MOV DL,AL ;显示字符
 MOV AH,02H
 INT 21H
INC SI
LOOP KUBOPIY
MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS
END START

 

 

 

DATA SEGMENT
MESG1 DB ' N1<=X<=N2 $ '
MESG2 DB ' X<N1 $ '
MESG3 DB ' X>N2 $ '
N1 EQU 22
N2 EQU 88
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESG1
MOV AH,1 ;键盘输入字
INT 21H
CMP AL,N1
JAE NEXT ;X ≥ N1 转
MOV DX,OFFSET MESG2
JMP DISP
NEXT: CMP AL,N2
JBE DISP ;X ≤ N2 转
MOV DX,OFFSET MESG3
DISP: MOV AH,09H
INT 21H ;显示结果信息
MOV AH, 4CH
INT 21H ;返回DOS
CODE ENDS
END BEG

 

 

posted @ 2020-11-12 17:50  kubopiy  阅读(674)  评论(0编辑  收藏  举报