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