学习DOS汇编显示系统日期时间程序

16位实模式,适用于DOS环境;

cpp 复制代码
org 100h
 
; 显示日期
mov ah, 2Ah    ; 获取系统日期
int 21h        ; CX=年, DH=月, DL=日
mov al, dl     ; 日 
call print_dec 
mov dl, '/'    ; 分隔符 
call print_char 
mov al, dh     ; 月
call print_dec
mov dl, '/'    ; 分隔符
call print_char
mov ax, cx     ; 年 
call print_dec 
 
; 显示分隔空格 
mov dl, ' '
call print_char
 
; 显示时间 
mov ah, 2Ch    ; 获取系统时间
int 21h        ; CH=时, CL=分, DH=秒
mov al, ch     ; 时 
call print_dec 
mov dl, ':'    ; 分隔符
call print_char
mov al, cl     ; 分 
call print_dec 
mov dl, ':'    ; 分隔符
call print_char
mov al, dh     ; 秒 
call print_dec 
 
mov ax, 4C00h  ; 退出程序
int 21h 
 
; 子程序:打印AL中的十进制数(0-99)
print_dec:
    aam         ; AL -> AH(十位), AL(个位)
    add ax, 3030h 
    xchg al, ah
    mov dl, al
    call print_char 
    mov dl, ah 
; 子程序:打印DL中的ASCII字符
print_char:
    push ax 
    mov ah, 02h 
    int 21h 
    pop ax 
    ret

在模拟器运行如下;

它有两个子过程,print_char打印dl中的ascii字符,print_dec打印AL中的十进制数(0-99),

学习一下aam指令,

x86 AAM指令用于对AL寄存器中的非压缩BCD乘法结果进行调整,以得到正确的非压缩BCD格式,高位存于AH中,低位存于AL中。

AAM指令本身并不带操作数。在执行AAM之前,通常是先执行MUL指令将两个非压缩BCD数相乘,结果存于AX中(实际上结果主要在AL中),然后使用AAM指令将AL中的结果调整为两个非压缩BCD数字,高位存于AH中,低位存于AL中。

为什么会有这两句,

add ax, 3030h

xchg al, ah

查到的资料说,

这两句汇编代码的作用是将AX寄存器中的两字节非压缩BCD码转换成可以显示的ASCII码;

ADD AX, 3030H:将AX寄存器中的内容与3030H相加,结果存入AX寄存器中。这一步骤通常用于将非压缩BCD码转换为ASCII码。

XCHG AL, AH:交换AX寄存器中AL和AH的内容。这一步骤用于调整字节顺序,使得转换后的ASCII码正确显示。

这两句代码的组合常用于将二进制无符号数转换成显式的十进制ASCII码并显示。例如,如果AX中存储的是非压缩BCD码,经过这两步操作后,AX中的内容将变成对应的ASCII码,便于在屏幕上显示。

ADD AX, 3030H:将非压缩BCD码转换为ASCII码。

XCHG AL, AH:交换字节顺序,确保ASCII码正确显示。

这两句代码的组合常用于将二进制无符号数转换成显式的十进制ASCII码并显示;

mov dl, '/' ;这么写也是可以的,没出错,我汇编不是太熟悉;

mov ah, 2Ah ; 获取系统日期

int 21h ; CX=年, DH=月, DL=日

调用中断获取系统日期,把2Ah赋给ah是入参,调用成功以后,cx寄存器的值是年,dh寄存器的值是月,dl寄存器的值是日;

有时间继续;

相关推荐
水饺编程1 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust1 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王2 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg6663 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-4 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot88811 天前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
00后程序员张11 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
wechatbot88814 天前
解决企业微信官方 API 短板:iPad 协议全功能对接方案
java·汇编·windows·http·微信·企业微信
学逆向的17 天前
汇编——JCC指令
开发语言·汇编·网络安全
一只旭宝17 天前
【汇编入门】寄存器、MOV/LEA、JMP/CALL/RET、内存与指令本质
汇编