組合語言練習(一)

2021-09-29 23:21:00 字數 1321 閱讀 2541

編寫程式段從鍵盤接收乙個字元,如輸入為y或y,在螢幕上輸出『yes』;如輸入為n或n,在螢幕上輸出『no』; 然後退出。如輸入其它字元,螢幕上輸出『please input again』,然後等待重新輸入。

datas segment   ;此處輸入資料段**

string db 'input a letter: $'

string1 db 'yes $'

string2 db 'no $'

string3 db 'please input again: $'

buff db 100

db ?

db 100

dup(

'$')

datas ends

codes segment

assume cs:codes,ds:datas;

,ss:stacks

start:

mov ax,datas

mov ds,ax

;此處輸入**段**

mov dx ,offset string

mov ah,

09h int 21h

l: mov dx,offset buff

mov ah,

0ah int 21h

mov ah,

2 mov dl,

10int

21h mov ah,

2 mov dl,

13int

21h mov ah,

06h xor si,si

mov cl,buff[1]

mov dl,buff[si+2]

cmp dl,

'y' jz o1

cmp dl,

'y' jz o1

cmp dl,

'n' jz o2

cmp dl,

'n' jz o2

mov dx,offset string3

mov ah,

09h int 21h

jmp l

o1: mov dx ,offset string1

mov ah,

09h int 21h

jmp exit

o2: mov dx,offset string2

mov ah,

09h int 21h

jmp exit

exit:

mov ah,

4ch int 21h

codes ends

end start

組合語言(一)

8086暫存器都是16位的暫存器,根據用途可分為4種型別。分別是資料暫存器 位址暫存器 段暫存器和控制暫存器。如圖所示 資料暫存器中每個暫存器又可以分為2個8位的暫存器。分別為ah al,bh bl,ch cl,dh dl。h表示高位元組 高8位 暫存器 l表示低位元組 低8位 暫存器。例如 用ax...

組合語言(一)

每一種微處理器都有自己的機器指令集 組合語言 由於很長的1與0難以辨別與記憶,所以誕生組合語言操作 暫存器bx的內容送到ax中 機器指令 1000100111011000 彙編指令 mov ax,bx組合語言由彙編指令,偽指令,其他符號 後兩者都不對應機器碼 分別對應 機器碼的助記符,編譯器執行,由...

組合語言 AT T組合語言

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