dosbox masm 汇编语言 三天入门介绍 以及 实现显示时间的功能


这里就不加什么内容了,都写在了程序注释里。刚学汇编三天,如果有写的不对的欢迎评论留言。。。

dosbox以及全部所需资源下载

迅雷云盘
链接:https://pan.xunlei.com/s/VN88xwhr4ThZJvpOUaNu8r36A1
提取码:h3ax

下载链接为一个masm.zip文件 内部包含
DOSBox0.74_3_win32_installer.exe
debug.exe
LINK.EXE
MASM.EXE
ML.EXE
DOSXNT.EXE
exe2bin.exe

其中 h.asm 文件内容为下文纯代码
编译运行方式为
在dosbox窗口界面 运行命令

mount c f:/文件解压路径
c:
masm h #然后敲三下回车
link h #然后敲三下回车
h #直接运行

masm 汇编语言 显示时间 程序及注释

DATAS  SEGMENT
     STRING  DB  'TIME IS ','$' ;设置 string字符串 随便加逗号
     ;例 STRING  DB  'TIME IS ',5,'d',12,'h','$' ;debug中用-d 0000 查看
DATAS  ENDS

CODES  SEGMENT
     ASSUME    CS:CODES,DS:DATAS
     
START:
     NOP;不操作 命令整理
     MOV  AX,DATAS ;将DATAS中的数据移动到AX的地址下 相当于给AX赋值 下文同理
     MOV  DS,AX
     LEA  DX,STRING ;string的地址偏移存入DX
     ;DX=1357 则DH=13 DL=57 用DEBUG name.exe -r 可以查看到DX DS这些32位内存 但是看不到DH DL 
     ;在debug中用-d 0000 可以看到string中的内容

     MOV AH,9 ;设置 AX = 09xx
     INT 21H ; 调用AH中的09H号命令 复制这一条百度会有使用说明

     MOV  AH,2CH
     INT  21H  ;2CH命令 将 时分秒 存入 CH CL DH
     PUSH DX ;将DX放入堆栈中

     MOV AL,CH
     CALL DISPLAY;跳转到下文中的 DISPLAY 函数 用于将小时数转为ASCII码并显示

     MOV AL,CL
     CALL DISPLAY
     
     
     POP AX ;从堆栈中取出一个数到AX中
     PUSH AX
     MOV AL,AH
     CALL DISPLAY

     POP AX
     CALL DISPLAY
               
     MOV  AH,4CH
     INT  21H
DISPLAY:
     PUSH BP ;将BP放入堆栈
     MOV BP,SP ;将命令指针存入BP 
     
     MOV AH,0 ;接下来转为ascii 码 属实看不懂 就直接拿来用了
     MOV BL,10
     DIV BL
     ADD AX,3030H ; AX + 3030并将结果存入AX
     PUSH AX	;将AX放入瓶子里 doge
     MOV DL,AL
     MOV AH,02
     INT 21H
     POP DX		;从瓶口取出并放在DX里 doge
     MOV DL,DH
     INT 21H ;调用 AH中的指令 此时仍为02H
     
     MOV DL,":"
     INT 21H

     MOV SP,BP ;从BP恢复开始时的命令指针
     POP BP	;将BP恢复 之前恢复BP操作没写 直接把DOSBOX卡死了 无法操作 只能关闭窗口
     RET ;不懂 懒得百度了
CODES  ENDS ;结束了
    END   START ;终于结束了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值