在已知字串中搜尋特定字元』#』,若找到則 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 一樣。功...