masm6.15
;功能
;1.獲取字串長度
;2.簡單的解密
.486
;macro類似於c++中的內聯函式
crlf macro ;回車換行
mov ah,0eh ;功能號0e:顯示乙個字元
mov al,0dh ;al為待顯示的ascii碼
int 10h
mov al,0ah
int 10h
endm
outx macro x ;列印一串字元x為引數
mov ah,09h
mov dx,offset x
int 21h
endm
data segment use16
user db '11111111$'
passwd db '777777$' ;對稱加密後儲存資料
inuser db 10 dup(?)
inpasswd db 10 dup(?)
out1 db 'enter the username and the password:','$'
out2 db 'username:','$'
out3 db 'password:','$'
out4 db '*','$'
out5 db 'error!','$'
out6 db 'welcome','$'
uselend db ?
passwdlen db ?
tempwd db 10 dup(?) ;解密後的資料
data ends
;此處輸入資料段**
code segment use16
assume cs:code,ds:data,es:data
start:mov ax,data
mov ds,ax
mov es,ax
;獲取資料段中使用者名稱和密碼的位數
call getulen
call getplen
outx out1
crlf
outx out2
mov bx,offset inuser
mov cx,20 ;使用者名稱最大20個位元組
last1: mov ah,01h ;等待從鍵盤輸入乙個字元,同時顯示在顯示器螢幕
int 21h
mov byte ptr [bx],al
cmp al,0dh
jz jump1
inc bx
loop last1
jump1: crlf
outx out3
mov bx,offset inpasswd
mov cx,20
last2: mov ah,07h ;輸入字元但不顯示在螢幕上
int 21h
mov byte ptr [bx],al
cmp al,0dh
jz jump2
inc bx
outx out4
loop last2
jump2: crlf
cmp1: mov si,offset inuser
mov di,offset user
;從記憶體讀取使用者名稱長度
lea bx,uselend
mov cx,[bx]
and cx,00ffh
cldrepe cmpsb ;串比較,直到zf=0或cx=0
jz cmp2
outx out5
jmp exit
cmp2:
;對密碼區進行解密
call discry
mov si,offset inpasswd
mov di,offset tempwd
;從記憶體讀取密碼名長度
lea bx,uselend
mov cx,[bx]
shr cx,8
cldrepe cmpsb ;串比較,直到zf=0或cx=0
jz success
outx out5
jmp exit
success:outx out6
exit: mov ah,4ch
int 21h
;解密discry proc
;從記憶體讀取密碼名長度
lea bx,uselend
mov cx,[bx]
shr cx,8
;把passwd裡面的東西拷貝進tempwd
lea si,passwd
lea di,tempwd
disgo:
movsb
loop disgo
;從記憶體讀取密碼名長度
lea bx,uselend
mov cx,[bx]
shr cx,8
lea bx,tempwd
disc: sub [bx],cx
inc bx
loop disc
discry endp
;獲取使用者名稱字串長度
getulen proc
mov ax,0h
mov bl,24h
mov di,offset user
ul: cmp byte ptr[di],bl
jz goout1
inc di
inc ax
jmp ul
goout1:
lea bx,uselend
mov byte ptr [bx],al
mov ax,0h
mov bx,0h
mov di,0h
retgetulen endp
;獲取密碼符串長度
getplen proc
mov ax,0h
mov bl,24h
mov di,offset passwd
pl: cmp byte ptr[di],bl
jz goout2
inc di
inc ax
jmp pl
goout2:
lea bx,passwdlen
mov byte ptr [bx],al
mov ax,0h
mov bx,0h
mov di,0h
retgetplen endp
code ends
end start
簡單資料儲存以及抗鋸齒
題目是說的簡單資料儲存,也就是說少量的簡單的資料儲存,大量複雜的資料應該使用sqlite。cocos2d x提供了相應的方法儲存簡單資料 cpp view plain copy ccuserdefault shareduserdefault setstringforkey name zhycheng...
簡單資料儲存以及抗鋸齒
出處 題目是說的簡單資料儲存,也就是說少量的簡單的資料儲存,大量複雜的資料應該使用sqlite。cocos2d x提供了相應的方法儲存簡單資料 cpp view plain copy ccuserdefault shareduserdefault setstringforkey name zhych...
簡單模擬使用者密碼登入場景
問題描述 在日常生活中我們通常在各種情況下需要輸入密碼來獲取所需要的資訊,使用者登入有三次輸入機會,若三次輸入均錯誤則系統自動退出。請用c語言簡單模擬一下使用者密碼登入場景 問題分析 輸入密碼為字串,我們先定義乙個字串裡面儲存使用者初始密碼,再定義乙個陣列為使用者輸入的密碼,對初始密碼和輸入密碼用s...