程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 匯編源碼系列之cdcheck

匯編源碼系列之cdcheck

編輯:匯編語言

這個都是過去DOS時代的匯編源碼,雖然已經過去了,但是對於學習匯編還是有幫助的,匯編語言只是程序員一門基礎語言,大多人掌握即可,不一定要深入研究.......

.model small    ; It's a flaw of mine ... I really like this model
      ; I know I should do a .com with the tiny model..
      ; but I just love the small :>
.stack 100h    ; Plenty stack ;>
.386
.data    
info db 30 dup (0)
right db 'Right CD$'
wrong db 'Wrong CD$'
nomscdex db 'MSCDEX not installed$'
.code
mov ax, @data      ; Make DS&ES point to the DATA
mov ds,ax
mov es,ax
lea edx, nomscdex
xor ebx,ebx
mov eax, 1500h    ; MSCDEX installed?
int 2fh
test ebx,ebx
jz exit      
mov edi,10h
nextloop:
mov ecx,edi
mov ax, 150bh    ; is drive ECX supported by MSCDEX (is it a cdrom?)
int 2fh
test ax,ax    ; ax!=0 if drive is CDrom
jz continiue
mov ax, 440dh
mov dx, offset info
mov bl,5
mov ch,8
mov cl,66h
int 21h      ; Fetch volume serial number (same as when you do dir)
mov eax, dword ptr [info+2]
cmp eax, 0ffb7f724h;   ;<<<<calibrate this to fit your own "right" CD
jnz continiue
lea edx, right
jmp exit
continiue:
dec edi      ; next drive
jnz nextloop
lea edx, wrong    ; not in any drive!
exit:
mov ah, 9h
int 21h
mov ax,4c00h          ; terminate!
int 21h
end

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved