組合語言(三十一)之數字字串加密與解密

2021-09-07 15:34:54 字數 2712 閱讀 4932

輸入一串數字,然後進行加密解密輸出

程式執行:

mov ax,datas ;初始化ds

mov ds,ax

;輸出輸入提示

lea dx,input

mov ah,9

int 21h

;輸入一串字元

lea dx,line_max_len

mov ah,10

int 21h

;判斷字串長度是否為0

cmp line,0

jz nosize

;輸出加密的提示

lea dx,outputsecret

mov ah,9

int 21h

;加密mov cl,line

xor ch,ch

lea bx,secret ;獲取加密的位址表

mov si,0

s:mov al,line+1[si]

cmp al,'0' ;判斷要加密的字元是否合法

jb err

cmp al,'9'

ja err

sub al,30h ;加密

xlat

mov linesecret[si],al ;儲存加密的字元

inc si

loop s

mov linesecret[si],'$' ;設定字串結束標誌

lea dx,linesecret ;輸出加密的字串

call output

;輸出解密提示

lea dx,outputdesecret

mov ah,9

int 21h

;解密mov cl,line

xor ch,ch

lea bx,desecret ;獲取解密的位址表

mov si,0

s1:mov al,linesecret[si]

cmp al,'0' ;判斷要解密的字元是否合法

jb err

cmp al,'9'

ja err

sub al,30h ;解密

xlat

mov linedesecret[si],al ;儲存解密的字元

inc si

loop s1

mov linedesecret[si],'$' ;設定輸出字串結束標誌,並且輸出解密字串

lea dx,linedesecret

call output

jmp exit ;跳至退出

nosize:

lea dx,outputnosize ;沒有輸入提示

mov ah,9

int 21h

jmp exit

err:

lea dx,outputerr ;輸入錯誤提示

mov ah,9

int 21h

exit:

retmain endp

output proc near uses ax dx

mov ah,9

int 21h

retoutput endp

codes ends

end main

組合語言(十一)之統計非數字字元個數

輸入以 結尾的字串,統計並輸出非數字字元的個數 程式執行 mov ax,datas 初始化ds mov ds,ax lea si,inputprompt 輸出輸入提示 mov ah,2 mov cx,inputpromptlen 輸出輸入提示的字串長度 s2 mov dl,si int 21h 輸出...

計算字串長度 組合語言

設有一字串存放在以 buf 為首址的資料區中,其最後一字元 作為結束標誌,計算該字串的長度並輸出 datas segment buf db 20,20 dup datas ends stacks segment stacks ends codes segment assume cs codes,ds...

組合語言巧妙排序字串

用組合語言實現任意輸入字串排序,我主要是採用先分組,然後分別排序,在把兩個組合起來排序的使用演算法。在我的輸出結果頁面中,總共會有6行,第一行表示的是你所輸入的我們需要排序的字串,第二行表示的是將字串分為兩組其中的第一組,第三行表示的是將字串分為兩組其中的第二組,第四行表示的是對分成的第一組排序得到...