執行結果
從buf單元開始存有一字串(長度<255),程式設計實現統計該字串中的ascii在42h~45h之間的字元個數,並將統計結果以二進位制形式顯示在螢幕。
程式執行後,給出提示操作,請使用者鍵入使用者名稱和密碼;使用者在鍵入密碼時,程式不回顯鍵入字元;只有當使用者鍵入的使用者名稱,密碼字串和程式內定的字串相同時,顯示歡迎介面並返回dos;否則給出提示資訊,使用者名稱或密碼錯誤,再次輸入。介面顏色自定(彩色或黑白)
本來是想用rdrand指令來寫一段隨機數生成**的,但是發現rdrand這個指令是在inter於ivy bridge微架構(2023年生產)後才定義到ia32架構中的,目前我們的電腦上基本上都支援這個指令,但是經過嘗試之後發現即使採用直接寫位元組碼dosbox也不支援這個指令,可能有以下兩個原因:
dosbox的虛擬化環境採用了模擬而不是虛擬,這導致了只支援實模式下的指令集;
這個指令只能在保護模式下使用
.586p
data segment use16
count_number db 0
string_1 db 'abcdefg',0
data ends
code segment use16
assume cs: code, ds: data
beg:
mov ax,data
mov ds,ax
mov di,offset string_1
;得到在範圍內的數
get_count:
mov al,ds:[di]
cmp al,0
jz print_result
cmp al,42h
jb .1
cmp al,45h
ja .1
inc count_number
.1:
inc di
jmp get_count
;得到在範圍內的數
;列印資料
print_result:
mov bl,count_number
mov cx,8
.2:mov dl,0
shl bl,1
adc dl,30h
mov ah,2
int 21h
loop .2
mov dl,'h'
int 21h
;列印資料
mov ah,4ch
int 21h
code ends
end beg
.586p
data segment use16
;定義資料接受區
username db 100 dup(0)
username_recived_number dw 0
password db 100 dup(0)
password_recived_number dw 0
;定義資料接受區
username_origin db 'yourusername',0
password_origin db 'yourpassword',0
string_tip db 'please enter your username!',0ah,0dh,'$'
string_password_tip db 'please enter your password!',0ah,0dh,'$'
string_wrong_tip db 'wrong username or password!\n',0ah,0dh,'$'
string_hello_tip db 'you got it!',0ah,0dh,'$'
data ends
code segment use16
assume cs: code, ds: data
beg:
mov ax,data
mov ds,ax
mov dx,offset string_tip
mov ah,9
int 21h
mov username_recived_number,0
getusername:
mov ah,1
int 21h
mov di,offset username
add di,username_recived_number
mov ds:[di],al
inc username_recived_number
cmp al,0dh;當輸入回車時實際上是輸入了0x0a,0x0d兩個字元,此時系統呼叫實際上返回的是最後乙個字元0x0d
jnz getusername
mov di,offset username
add di,username_recived_number
sub di,1
mov [di],0
mov dx,offset string_password_tip
mov ah,9
int 21h
mov password_recived_number,0
getpassword:
mov ah,8
int 21h
mov di,offset password
add di,password_recived_number
mov ds:[di],al
inc password_recived_number
cmp al,0dh;當輸入回車時實際上是輸入了0x0a,0x0d兩個字元,此時系統呼叫實際上返回的是最後乙個字元0x0d
jnz getpassword
mov di,offset password
add di,password_recived_number
sub di,1;將最後乙個輸入的0x0d字元刪去
mov [di],0
cld;當df位為0時,採用大端方式
mov ax,ds
mov es,ax
checkusername:
mov si,offset username_origin
mov di,offset username
mov cx,username_recived_number
repe cmpsb;採用串比較,源位址為ds:si,目的位址為es:di
jnz wrong
checkpassword:
mov si,offset password_origin
mov di,offset password
mov cx,password_recived_number
repe cmpsb
jnz wrong
mov dx,offset string_hello_tip
mov ah,9
int 21h
mov ah,4ch
int 21h
wrong:
mov dx,offset string_wrong_tip
mov ah,9
int 21h
jmp beg
code ends
end beg
實際上這兩個題目都比較簡單,實際上編寫的時候只需要注意一下系統呼叫之後的引數改變就好了。
其中第二個源**由於比較懶…有以下缺陷:
第乙個題目:
第二個題目:
南京郵電大學密碼學之md5
首先看一下題目 python 好!這裡有一段丟失的md5密文 e9032?da?08?911513?0?a2 要求你還原出他並且加上nctf 提交 已知線索 明文為 tasc?o3rjmv?wdjkx?zm 意思很簡單就是根據明文匹配密文,但是明文不完整需要遍歷字母表和數字進行爆破 這裡用簡單的py...
重慶郵電大學CSDN每週會議文案
本週重慶郵電大學csdn協會召開了每週一次的會議,會議內容如下 一 為了貫徹學校社團聯合會 關於社團成員會費收取的決定 本協會定於10月24日至25日收取各部門新成員會費,每位新成員按照學校標準繳納20元會費,希望各部門在規定時間內完成繳費的相關事宜 二 為了加強協會管理,協會將向成員收取5元的工作...
2023年北京郵電大學機試題目
趁著現在還記得趕快寫下來,個人回憶版 計算機學院機試題目 第一題 題目描述 輸入32位的二進位制01串,輸出這個數 1和 3後的32位二進位制串 輸入描述 先輸入t,表示輸入的組數 然後輸入t行二進位制串 輸出描述 輸出 1和 3後的二進位制串 輸入樣例 2000000000000000000000...