彙編學習筆記 第五章

2021-08-02 13:57:19 字數 3355 閱讀 3492

從鍵盤獲取乙個位元組

輸出乙個位元組

輸出字串

**

mov dx, offset lable

mov ah, 09h

int 21h

cmp的詳細解釋

cf標誌位(無符號數

of標誌位(帶符號數

單標誌條件轉移指令

無符號數條件轉移指令

帶符號數條件轉移指令

cx暫存器條件轉移指令

of = 0 的情況比較方便記憶,of = 1的情況可以相反記憶

js是值為負時轉移,應當特別關注

set*條件設定指令

跳轉表核心思想:do - while

迴圈控制指令

串操作指令

重複字首指令

指令:rep

指令:repz/repe

指令:repnz/repne

串傳送串儲存

串裝入串比較

串搜尋串輸入

串輸出常用初始化指令:cld/std(設定df的值)

例題經典部分

巧妙解決上述問題只有兩個偏移位址暫存器

xchg bx, di

stosw

xchg bx, di

輸出乙個兩位數(原值存放在bx中)

mov ax, bx

mov bl, 10

div bl ;因為是兩位數,所以不需要dx

;先輸出十位數,存放在al中

mov bh, ah ;儲存餘數

mov dl, al

mov ah, 2

or dl, 30h

int 21h

;輸出個位數,現存放在bh中

mov dl, bh

or dl, 30h

int 21h

注:di/si 名字的含義值得深思

值得關注的例題

把暫存器ebx中的二進位制以十六進製制的形式顯示

start:

mov ebx 11aa22bbh

mov ch, 8

;8位十六進製制數,每次處理一位,共8次

rotate:

mov cl, 4

rol ebx, cl ;迴圈移動,每次將最高位移動到最低位

mov al, bl

and al, 0fh

add al, 30h

cmp al, 39h

jbe disp

add al, 7

將字變數x轉換為十進位制輸出(逐個輸出)

data segment

div1 dw 10000,1000,100,10,1

data ends

code segment

assume:cs:code, ds:data

start:

mov ax, data

mov ds, ax

mov ax, x

mov cx, 5

mov si, offset div1

rep1:

xor dx, dx

div word ptr [si]

push dx ;儲存餘數

or al, 30h

mov dl, al

mov ah, 2

int 21h

inc si

inc si

pop ax ;將餘數存入ax

loop rep1

mov ax, 4c00h

int 21h

code ends

end start

注:關鍵**是迴圈,但機械化的迴圈5次會有多餘的0輸出

將字變數x轉換為十進位制輸出(一起輸出)

rep1:

xor dx, dx

mov bx, 10

div bx

or dl, 30h

push dx

loop rep1

mov cx, 5

rep2:

pop dx

mov ah, 2

int 21h

loop rep2

連線三個字串

mov di, offset buff

lp1:

mov bx, len

sub bx, 2

cmp di, bx

jz del_end ;輸出字串

cmp word ptr[di], 0a0dh

jnz continue ;不是回車換行就繼續查詢

push di

mov si, di

inc si

inc si ;跳過換行

mov cx, len

sub cx, di ;計算移動總長度

cldrep movsb ;將ds/es定義在同乙個data段,巧用si/di

mov ax, len

sub ax, 2

pop di

;巧妙的承接,遞增了di

continue:

inc di

jmp lp1

注:不足為也刪除了空格

將位元組變數buffer中的10個壓縮的bcd碼轉換成非壓縮的bcd碼存入result中

...

lea si, buffer

lea di, result

mov cx, 10

l1:mov dl, [si]

mov al, dl

push cx

mov cl, 4

shr al, cl ;右移乙個bcd碼

pop cx

mov [di], al ;存入高位bcd碼

inc di

and dl, 0fh ;高位清零

mov [di], dl ;存入低位bcd碼

inc di

inc si

loop l1

彙編第五章作業

5.1小寫變大寫 data segment meg db please enter a lowercase letter data ends code segment assume cs code,ds data start mov ax,data mov ds,ax mov ah,9 mov dx...

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

python學習筆記第五章

1.物件是屬性和方法的集合。同樣也有繼承機制。init 就是python的建構函式。變數私有化是在變數前加上 繼承機制 class cat def hello self print i m a cat class dog cat def eat self print i eat bone kitty...