組合語言作業(七)

2021-09-20 09:04:09 字數 1896 閱讀 1307

班級:計算機14-1姓名:許愷

學號:2014011329日期:2016.4.29

一、編寫程式

1.從鍵盤輸入乙個不超過8的個位數,計算該數的階乘,並以十進位制制式輸出。

要求:(1)輸入資料在主程式中實現;

(2)計算階乘的功能用子程式實現,子程式的名字為:fac;

(3)以十進位制形式輸出結果的功能用子程式實現,子程式的名字為:output;

(4)各子程式通過暫存器傳遞引數;

(5)輸出格式要美觀,要有適當的提示。

(1)程式清單:

data segment

s1 db 'please input an integer between 0 to 8:$'

s2 db 'its factorial=$'

data ends

stack segment stack

dw 30 dup(?)

stack ends

code segment

assume cs:code,ds:data,ss:stack

main proc far

start:

mov ax,data

mov ds,ax

lea dx,s1

mov ah,09h

int 21h

mov ah,01h

int 21h

mov dh,al

mov dl,0dh

mov ah,02h

int 21h

mov dl,0ah

mov ah,02h

int 21h

mov al,dh

sub al,30h

mov ah,0

call fac

mov bx,ax

lea dx,s2

mov ah,09h

int 21h

mov ax,bx

mov dx,0

call output

mov ah,4ch

int 21h

fac proc near

mov cl,al

dec cl

l1:  mul cx

loop l1

retfac endp

output proc near

mov cx,0000h

l3:  mov bx,000ah

cmp ax,0

jbe l2

div bx

push dx

mov dx,0000h

inc cl

jmp l3

l2:  pop dx

add dx,0030h

mov ah,02h

int 21h

loop l2

retoutput endp

main endp

code ends

end start

(2)執行結果(截圖):

二、程式設計體會

其實感覺堆疊段不用編寫,因為之前不寫也行,開始已經寫好了,後來知道要有提示語句,又加輸出字串時就出錯了,在壓棧的時候出現了死迴圈,是用dx輸出字串的時候出了問題,最後是重新把dx賦0才解決,這次更加理解了堆疊的使用,以後會用的更加的順手和頻繁。

組合語言作業(五)

班級 計算機14 1姓名 許愷 學號 2014011329日期 2016.4.22 一 編寫程式 1.設有字陣列x y和z,各有10個元素,計算 z0 x0 y0 z1 x1 y1 z2 x2 y2 z3 x3 y3 z4 x4 y4 z5 x5 y5 z6 x6 y6 z7 x7 y7 z8 x8...

組合語言作業(六)

班級 計算機14 1姓名 許愷 學號 2014011329日期 2016.4.24 一 編寫程式 1.從鍵盤輸入乙個長度不超過50的字串,然後將該字串原樣輸出。要求 用a號功能呼叫輸入,用9號功能呼叫輸出。1 程式清單 data segment str db 50,50 dup data ends ...

組合語言作業(五)

班級 計算機14 1姓名 許愷 學號 2014011329日期 2016.4.22 一 編寫程式 1.設有字陣列x y和z,各有10個元素,計算 z0 x0 y0 z1 x1 y1 z2 x2 y2 z3 x3 y3 z4 x4 y4 z5 x5 y5 z6 x6 y6 z7 x7 y7 z8 x8...