尋找特殊字元 組合語言

2021-09-17 05:02:21 字數 2005 閱讀 6029

在已知字串中搜尋特定字元』#』,若找到則 al 返回 0,找不到 al 返回 1

datas segment

buf db 20,?,20 dup('$')

len equ $-buf

datas ends

stacks segment

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax

mov es,ax

lea dx,buf

mov ah,10 ;輸入

int 21h

mov dl,0ah ;換行

mov ah,2

int 21h

mov dl,0dh

mov ah,2

int 21h

mov cx,len

mov di, offset buf

mov al, '#';將要查詢的字元存入al

repnz scasb ;逐個查詢

jz y ;若zf=1,則字串中有 』,! 』跳至 y

mov al,1 ;字串中不含 』,! 』al=1

jmp e

y: mov al,0 ;字串中含有 』,! 』al=0

e: add al,30h ;將al 中的 『0與』『1轉』換成可顯示結果

mov dl,al ;顯示比較結果

mov ah,02

int 21h

mov ah,4ch

int 21h

codes ends

end start

結果圖示例:

設有一字串已存放在 strbuf 為首址的資料區中,編一程式找出其中的『#』字元,如果字串中不存在『#』字元則應該輸出「not found」

datas segment

buf db 'dfbvzv$'

len equ $-buf

buf1 db 'not found$'

datas ends

stacks segment

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax

mov es,ax

mov cx,len

mov di, offset buf

mov al, '#';將要查詢的字元存入al

l1:repnz scasb ;逐個查詢,zf=1時結束迴圈

jz l3

l2:mov dx,offset buf1

mov ah,9

int 21h

jmp l4

l3:mov bx,di

add bl,30h ;將bl 中的值轉換成可顯示結果

mov dl,bl ;顯示計算結果

mov ah,02

int 21h

l4:mov ah,4ch

int 21h

codes ends

end start

結果圖示例:

輸出結果表明「#」位於第五個位置

組合語言 字元顯示

題目 輸入乙個字元,找出它的前導字元和後續字元,並按順序顯示這三個字元。要求 程式從鍵盤接收使用者輸入的乙個字元後,然後分別找出它的前導字元和後續字元,再按順序顯示這三個字元。在使用者輸入和顯示字元之前都要有相應的提示資訊。知識覆蓋 計算機資料的儲存方式。8位,16位,32位暫存器的使用選擇。這裡選...

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言 彙編指令

功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...