組合語言作業(五)

2021-09-20 09:04:09 字數 1834 閱讀 8255

班級:計算機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-y8   z9=x9-y9

要求:x、y兩個陣列的數均為兩位十進位制數,直接放在資料段中,無需從鍵盤輸入,且兩數相加或相減之後是一位或兩位數(有可能是負數)

輸出:以十進位制形式輸出計算後的結果(即:陣列z的內容)

(1)程式清單:

data segment

x dw 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h

y dw 11h,12h,13h,14h,15h,16h,17h,18h,18h,20h

z dw 10 dup(?)

logic_ruler dw 0010001000b

data ends

code segment

assume cs:code,ds:data

main proc far

start:

mov ax,data

mov ds,ax

mov dx,logic_ruler

mov cx,10

mov bx,0

l1:mov ax,x[bx]

shr dx,1

jc l2

add ax,y[bx]

jmp l3

l2:sub ax,y[bx]

cmp ax,0

jge l3

neg ax

push dx

mov dh,al

mov dl,'-'

mov ah,02h

int 21h

mov al,dh

mov ah,0

pop dx

l3:mov z[bx],ax

push dx

push bx

mov bh,al

mov bl,0ah

div bl

add ah,30h

add al,30h

mov bx,ax

mov dl,bl

mov ah,02h

int 21h

mov dl,bh

mov ah,02h

int 21h

mov dl,' '

mov ah,02h

int 21h

pop bx

pop dx

add bx,2

loop l1

mov ah,4ch

int 21h

main endp

code ends

end start

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

二、程式設計體會

真的是難,本以為書上有現成的例題就不著急寫,最後才發現那麼不一樣,浪費好長時間又去修改程式以及優化程式,最終還是做出來了,開始感覺根本做不出來,最後還是做出來了,也許程式設計的魅力就在於此吧,本以為絕對做不到的事情,卻做出來了,太有成就感。

組合語言作業(五)

班級 計算機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.29 一 編寫程式 1.從鍵盤輸入乙個不超過8的個位數,計算該數的階乘,並以十進位制制式輸出。要求 1 輸入資料在主程式中實現 2 計算階乘的功能用子程式實現,子程式的名字為 fac 3 以十進位制形式輸出結果的功能用子程...