天天看點

彙編語言作業(五)

班級:  計算機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的内容)

提示:對于負數的顯示,在判斷該數是負數後,可先輸出一個負号,然後對該數求補,再輸出相應的正數,例如,-15,先輸出一個負号,求補後,該數變成了15,直接輸出就可以了。

(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 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 dl,' '

   pop bx

   add bx,2

   loop l1

   mov ah,4ch

   main endp

code ends

end start

(2)運作結果(截圖):

彙編語言作業(五)

二、程式設計體會

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

繼續閱讀