組合語言實驗課 第八次記錄

2021-10-10 09:03:17 字數 2415 閱讀 8764

定義一組數,判斷這一組資料中的正數,負數和0的個數

datas segment

table db 7,98

,-98,

158,10,

133,-45

,66,-

134,

-122,0

,-33,

0,-99

,0a1 byte 'the number of positive numbers is:!'

a2 byte 'the number of negative numbers is:!'

a3 byte 'the number of 0 is:!'

datas ends

stacks segment

;此處輸入堆疊段**

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax

mov bl,

15;計數

call count

mov si,offset a1 ;調出提示資訊

call output1

add al,

48;顯示正數的個數

mov dl,al

mov ah,

2int

21h

call control

mov si,offset a2

call output1

add ch,

48;顯示負數的個數

mov dl,ch

mov ah,

2int

21h

call control

mov si,offset a3

call output1

add bh,

48;顯示零的個數

mov dl,bh

mov ah,

2int

21h

mov ah,

4ch int 21h

;統計個數

count proc

mov al,

0;正數

mov ch,

0;負數

mov bh,0;零

mov cl,

0;計數

mov dh,

0

mov si,offset table

ll: cmp [si]

,dh jz equal ;相等

js lown ;負數

jns highn ;正數

highn:

add al,

1 add cl,

1 add si,

1 cmp cl,bl

jb ll

jmp cover

lown:

add ch,

1 add cl,

1 add si,

1 cmp cl,bl

jb ll

jmp cover

equal:

add bh,

1 add si,

1 add cl,

1 cmp cl,bl

jb ll

jmp cover

cover:

retcount endp

;輸出函式

output1 proc ;入口引數si

push si

push ax

push dx

o1: mov ax,

[si]

cmp al,

'!';

!為結束標誌

je oover

mov dl,al

mov ah,

2int

21h add si,

1 jmp o1

oover:

pop dx

pop ax

pop si

retoutput1 endp

;回車換行

control proc

push ax

push dx

mov dl,

13 mov ah,

2int

21h mov dl,

10 mov ah,

2int

21h

pop dx

pop ax

retcontrol endp

codes ends

end start

第八次上機實驗課

任務一 任意輸入兩個大於10的整數,將兩數分別反轉 逆序 後兩相乘,如果最後一位是0去掉0,再反轉後輸出 includevoid main int fun int a return num 截圖如圖 任務分割線 任務二 假設乙個數列k表的前兩項是0,1,而之後的每一項為kn 2 kn 1 3 kn ...

第八次實驗報告

加強學生對指標資料型別的理解,熟悉指標的定義,通過指標間接訪問變數。加強學生對指標型別作為引數傳遞的理解。加強學生對字元指標以及將指標作為函式的返回型別的理解。加強學生對使用指針對陣列進行操作的理解。1.問題描述 1 定義乙個整形指標變數p,使它指向乙個整形變數,定義乙個浮點型指標q,使它指向乙個浮...

第八次實驗報告

1 問題描述 定義乙個整型指標變數p,使 yi它指向乙個整型變數a,定義乙個浮點型指標q,使它指向乙個浮點型變數b,同時定義另外乙個整型變數c並賦值初值3 使用指標變數,呼叫scanf函式分別輸入a和b的值。通過指標間接訪問並輸出a b的值。按16進製制方式輸出pq的值以及a b的位址。將p指向c,...