Day1 (8086汇编) [BX]和loop指令

  1. debug -g(断点并执行) -p(按过程执行并跳出循环)
  2. masm编译器会默认mov ax,[0] = mov ax,0 ,所以所有访问都要写成mov ax,ds:[0]
  3. 段前缀:指ds:[0]的ds(段寄存器都可,比如cs ds ss es…)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
8086汇编中显示系统时间,需要使用DOS中断来获取系统时间。具体步骤如下: 1. 定义一个日期时间结构体: ``` ;日期时间结构体 DATETIME STRUCT year db ? month db ? day db ? hour db ? minute db ? second db ? DATETIME ENDS ``` 2. 使用DOS中断21h来获取系统时间,将获取到的日期时间信息存储到结构体中: ``` ;获取日期时间 MOV AH, 02CH ;DOS中断21h的功能号 INT 21H ;调用DOS中断 MOV DATETIME.year, CH MOV DATETIME.month, CL MOV DATETIME.day, DH MOV DATETIME.hour, AL MOV DATETIME.minute, AH MOV DATETIME.second, DL ``` 3. 将日期时间信息转换为可读的字符串格式: ``` ;转换日期时间为字符串格式 MOV AH, 2 ;DOS中断21h的功能号 MOV DL, DATETIME.second INT 21H ;将秒数转换为两个ASCII码字符 MOV BYTE PTR [TIME_STR+7], DL MOV DL, DATETIME.second / 10 ADD DL, 30H MOV BYTE PTR [TIME_STR+6], DL MOV DL, DATETIME.minute INT 21H ;将分钟数转换为两个ASCII码字符 MOV BYTE PTR [TIME_STR+4], DL MOV DL, DATETIME.minute / 10 ADD DL, 30H MOV BYTE PTR [TIME_STR+3], DL MOV DL, DATETIME.hour INT 21H ;将小时数转换为两个ASCII码字符 MOV BYTE PTR [TIME_STR+1], DL MOV DL, DATETIME.hour / 10 ADD DL, 30H MOV BYTE PTR [TIME_STR], DL ``` 4. 最后将生成的时间字符串输出到屏幕上: ``` ;输出时间字符串 MOV AH, 09H ;DOS中断21h的功能号 MOV DX, OFFSET TIME_STR INT 21H ;输出时间字符串 ``` 完整代码如下: ``` ;8086汇编显示系统时间 .MODEL SMALL .STACK 100H ;日期时间结构体 DATETIME STRUCT year db ? month db ? day db ? hour db ? minute db ? second db ? DATETIME ENDS .DATA TIME_STR DB " : : ",0 .CODE MAIN PROC ;获取日期时间 MOV AH, 02CH ;DOS中断21h的功能号 INT 21H ;调用DOS中断 MOV DATETIME.year, CH MOV DATETIME.month, CL MOV DATETIME.day, DH MOV DATETIME.hour, AL MOV DATETIME.minute, AH MOV DATETIME.second, DL ;转换日期时间为字符串格式 MOV AH, 2 ;DOS中断21h的功能号 MOV DL, DATETIME.second INT 21H ;将秒数转换为两个ASCII码字符 MOV BYTE PTR [TIME_STR+7], DL MOV DL, DATETIME.second / 10 ADD DL, 30H MOV BYTE PTR [TIME_STR+6], DL MOV DL, DATETIME.minute INT 21H ;将分钟数转换为两个ASCII码字符 MOV BYTE PTR [TIME_STR+4], DL MOV DL, DATETIME.minute / 10 ADD DL, 30H MOV BYTE PTR [TIME_STR+3], DL MOV DL, DATETIME.hour INT 21H ;将小时数转换为两个ASCII码字符 MOV BYTE PTR [TIME_STR+1], DL MOV DL, DATETIME.hour / 10 ADD DL, 30H MOV BYTE PTR [TIME_STR], DL ;输出时间字符串 MOV AH, 09H ;DOS中断21h的功能号 MOV DX, OFFSET TIME_STR INT 21H ;输出时间字符串 MOV AH, 4CH ;DOS中断21h的功能号 INT 21H ;程序结束 MAIN ENDP END MAIN ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值