彙編基礎 筆記5(《組合語言》第七章)

2021-05-23 18:51:36 字數 1461 閱讀 3397

and:將相應位設為1,其它位不變

or:將相應位設為0,其它位不變

assume ds:data 

data segment 

db 'unix' 

db 'fork' 

data ends 

code segment 

start:  mov al,'a' 

mov bl,'b' 

mov ax,4c00h 

int 21h 

code ends 

end start 

-r:ds=0b2d

則,程式從0b3dh段開始(別忘了psp字首佔了256個位元組=100h,段位址的話就是10h)

data段是程式中的第乙個段,它就在程式的起始處,所以它的段位址為0b3dh

[bx+idata]:

(ax)=((ds)*16+(bx)+200)

mov ax,[bx+200]

mov ax,[200+bx]

mov ax,200[bx]

mov ax,[bx].200

比較c和組合語言定位字串中字元的方式:

c: a[i],b[i]

彙編: 0[bx],5[bx]

[bx+idata]為高階語言實現陣列提供了便利機制

si和di是8086cpu中和bx功能相近的暫存器

但它們不能夠分成兩個8位暫存器

實驗六(2)

assume cs:codesg,ss:stacksg,ds:datasg

stacksg segment

dw 0,0,0,0,0,0,0,0

stacksg ends

datasg segment

db '1. display      '

db '2. brows        '

db '3. replace      '

db '4. modify       '

datasg ends

codesg segment

start:  mov ax,stacksg

mov ss,ax

mov sp,16

mov ax, datasg

mov ds,ax

mov bx,3

mov cx,4

s:push cx

mov si,0

mov cx,4

s0:mov al,[bx][si]

and al,11011111b

mov [bx][si],al

inc si

loop s0

add bx,16

pop cx

loop s

mov ax,4c00h

int 21h

codesg ends

end start

大小寫轉換的方法

二重迴圈

二重迴圈中棧的應用

組合語言程式設計第七章

一 and和or指令 and指令 邏輯與指令,按位進行與運算。通過該指令可以將操作物件的相應位設為0,其他位不變。or指令 邏輯或指令,按位進行或運算。通過該指令可以將操作物件的相應位設為1,其他位不變。二 關於ascii碼 三 以字元形式給出的資料 在匯程式設計序中,用 的形式指明資料是以字元的形...

組合語言 第七章實驗6

採用基址變址定址 bx si 採用棧,外層迴圈開始時,將cx入棧,內層迴圈開始時,改變cx的值,內層迴圈結束時,將棧中的值pop出,傳給cx。ascll 大寫 ascll 小寫 a 0100 0001 a 0110 0001 字母用八位二進位制數表示,大小寫的區別是第 位上 和 的區別。大寫字母 小...

組合語言 王爽第七章

and指令 邏輯與指令,按位進行與運算。兩個位多是1才為1,其他情況都為0。比如 and al,10111111b指令將al的第六位設為0其位不變。or指令 邏輯或指令,按位或指令。兩個位置多是0才為0,其他情況多是1。比如 or al 10000000將al的第八位設為1,其他位保持不變。在計算機...