班級:計算機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...