[Assembly] GET TIME – Lấy thời gian hệ thống máy tính

Viết chương trình lấy thời gian hệ thống máy tính assembly (giờ, phút, giây và % giây).

Xem thêm:

Liệu máy tính có cổng máy in nối tiếp không?

Floating Point Unit là gì? chương trình kiểm tra FPU bằng ngôn ngữ lập trình assembly

1. Ý tưởng thuật toán

Ý tưởng:

  • Đầu tiên ta hiện thông báo “Giờ phút giây của máy tính”.
  • Để lấy time ta sử dụng chức năng 2ch của ngắt int 21h.
  • Sau khi dùng chức năng 2ch của ngắt int 21h thì giờ sẽ được chứa trong thanh ghi ch, phút sẽ chứa trong thanh ghi cl, giây chứa trong dh và phần trăm giây được chứa trong dl. Sau đó ta lần lượt hiển thị giá trị của các thanh ghi sau đó dùng Macro CALL_HIEN_SO_N để hiển thị giờ trong ax, dùng Macro HienString để hiển thị thông báo hoặc các kí tự ngăn cách thành phần.

Các MACRO và chương trình con sử dụng:

  • HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình
  • clrscr: Xóa màn hình
  • HIEN_SO_N: hiện giá trị có trong AX ra màn hình

2. Code lấy thời gian assembly

INCLUDE lib1.asm
.MODEL small
.STACK 100h
.DATA
header db 13,10,'          CHUC NANG GET TIME'
       db 13,10,'          ------------------'
       db 13,10,'     Current time is: $'
hc     db ':$'
dc     db '.$'
thoat  db 13,10,'     An phim bat ky de ve Main menu$'
.CODE
PS:
 mov ax, @data
 mov ds, ax
 clrscr
 HienString header   ;Hien thong noi dung dau tien
         mov ah,2ch          ;Chuc nang lay gio phutvaf giay cua may tinh
         int 21h             
         mov al,ch           ;Dua gio tu ch -> al
         xor ah,ah           ;ah=0
         call HIEN_SO_N      ;Hien gio
         HienString hc       ;Hien dau ':'
         mov al,cl           ;Dua phut tu cl -> al
         xor ah,ah           ;ah=0
         call HIEN_SO_N      ;Hien phut
         HienString hc       ;Hien dau ':'
         mov al,dh           ;Dua giay tu dh -> al
         xor ah,ah           ;ah=0
         call HIEN_SO_N      ;Hien giay
         HienString dc       ;Hien dau '.'
         mov al,dl           ;Dua % giay tu dl -> al
         xor ah,ah           ;ah=0
        	call HIEN_SO_N      ;Hien % giay
      	HienString thoat
      	mov ah, 1
      	int 21h
      	cmp al,'c'
      	jne Exit
      	jmp PS
      Exit:
      	mov ah, 4ch
      	int 21h			
INCLUDE lib2.asm
END PS

3. Kết quả chạy chương trình lấy thời gian hệ thống máy tính

Lấy thời gian hệ thống Assembly

Trên đây là ý tưởng và code chương trình lấy thời gian hiện tại của máy tính assembly. Cảm ơn bạn đã tham khảo lập trình assembly trên ttnguyen.net.

Bài viết liên quan:

viết chương trình hello world assembly

chương trình gộp 2 tệp assembly

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em