班級: 計算機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)運作結果(截圖):

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