• 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

     

  • 相关阅读:
    服务器基础安全配置
    PhpStorm服务激活
    MySQL快速生成本地测试数据
    mac上php版本切换
    保存修改数据记录(数据库)
    java面向对象整理
    用JavaScript实现表格编辑器
    循环之 打鱼还是晒网这是个问题
    循环之圆周率计算次数
    JAVASE 循环 之 计算各位上数字的和
  • 原文地址:https://www.cnblogs.com/kubopiy/p/13965216.html
Copyright © 2020-2023  润新知