設有陣列x和y。x陣列中有x1,…,x10;y陣列中有y1,…,y10。試編制程式計算z1=x1+y1,z2=x2+y2,z3=x3-y3,z4=x4-y4,z5=x5-y5,z6=x6+y6,z7=x7-y7,z8=x8-y8,z9=x9+y9,z10=x10+y10,結果存入z陣列。
對於這種問題可以使用迴圈結構來完成,由於每次迴圈的操作位不同,我們可以事先設立標誌位存放於邏輯尺中,進入迴圈後取出每乙個位就可以判斷做哪種操作了。
datasg segment
x dw 0,1
,2,3
,4,5
,6,7
,8,9
y dw 0,1
,2,3
,4,5
,6,7
,8,9
z dw 10
dup(?)
logic_rule dw 00dch ;
0000000011011100
0代表+
1代表-
datasg ends;--
----
----
----
----
codesg segment
assume cs:codesg,ds:datasg,es:datasg
main proc far
start:
push ds
sub ax,ax
push ax
mov ax,datasg
mov ds,ax
mov es,ax;--
----
----
----
----
----
- mov bx,
0 mov cx,
10 mov dx,logic_rule
next:
mov ax,x[bx]
shr dx,
1 jc subtract ;cf=
1,則做減法
add ax,y[bx]
jmp short result
subtract:
sub ax,y[bx]
result:
mov z[bx]
,ax add bx,
2 loop next;--
----
----
----
----
----
--exit:
retmain endp
codesg ends
end start
反彙編、檢視資料段記憶體
觀察標誌位為0,做加法的情況
觀察標誌位為1,做減法的情況
最後檢視記憶體變化
8086系列(19) 遞迴
將字串反序輸出 用bx儲存字串str的首位址,每次遞迴呼叫revers,當遇到 符時返回,在返回的途中輸出每個字元。datasg segment str db abcde datasg ends codesg segment main proc far assume cs codesg,ds dat...
8086邏輯運算和移位
一 邏輯運算指令and or not xor test 與,或,非,異或,測試 與,或,非,異或 這邊大家都知道,這裡不在重複,舉幾個例子 and ax,1000h ax中的16位數和1000h相與,結果送到ax中。or ax,00f0h ax中的值與00f0相或,結果在ax中 not al al中...
8086系列(21) 作業6 9
編寫乙個子程式巢狀結構的程式模組,分別從鍵盤輸入姓名及8個字元的 號碼,並以一定的格式顯示出來 主程式 telist 1 顯示提示符input name 2 呼叫子程式input name輸入姓名 3 顯示提示符input a telephone number 4 呼叫子程式inphone輸入 號碼...