負數的個數就一直輸出所有的數字個數
正數之和會輸出所有數字拼接 檢查好久也看不出來
匯編太難了 我死了 球球各位大佬救救我


DATAS SEGMENT
;此處輸入資料段代碼
intig db 0ah,0dh,'Please input a number:$'
outtig1 db 0dh,0ah,'The number of negative numbers is:$'
outtig2 db 0dh,0ah,'The sum of positive numbers is:$'
n dw 10
x dw 10000,1000,100,10,1
dplus dw 80,0,80 dup(0)
D DW 0
A DW 0
e dw 0
DATAS ENDS
STACKS SEGMENT
;此處輸入堆疊段代碼
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此處輸入代碼段代碼
MOV D,0
MAIN PROC NEAR
mov cx,3
l10:
lea dx,intig
mov ah,9
int 21h
call INPUT
dec cx
jnz l10
lea dx,outtig1
mov ah,9
int 21h
add e,30h
mov dx,e
mov ah,2
int 21h
MOV di,2
MOV AX,0
MOV SI,AX
AGAIN:
ADD AX,dplus[SI]
ADD SI,2
dec di
MOV d, AX
jnz AGAIN
lea dx,outtig2
mov ah,9
int 21h
mov ax,d
mov dx,0
mov bx,10000
div bx
mov d,dx
add ax,'0'
mov dx,ax
mov ah,2
int 21h
mov ax,d
mov dx,0
mov bx,1000
div bx
mov d,dx
add ax,'0'
mov dx,ax
mov ah,2
int 21h
mov ax,d
mov dx,0
mov bx,100
div bx
mov d,dx
add ax,'0'
mov dx,ax
mov ah,2
int 21h
mov ax,d
mov dx,0
mov bx,10
div bx
mov d,dx
add ax,'0'
mov dx,ax
mov ah,2
int 21h
mov ax,d
mov dx,0
mov bx,1
div bx
mov d,dx
add ax,'0'
mov dx,ax
mov ah,2
int 21h
RET
main endp
INPUT PROC NEAR
L1:
mov ah,1
int 21h ;AL=輸入數字的ascii碼
cmp al,0dh ;0dh是回車
jz L2
cmp al,'-'
je l3
CMP AL,'0'
Jl L2
CMP AL,'9'
Jg L2
sub al,30h
mov ah,0
xchg bx,ax
mul n
add bx,ax
jmp L1
L2:
mov dplus[0+si],bx
add si,2
l3:
mov ah,1
int 21h ;AL=輸入數字的ascii碼
cmp al,0dh ;0dh是回車
jz L4
CMP AL,'0'
Jl L4
CMP AL,'9'
Jg L4
sub al,30h
mov ah,0
xchg bx,ax
mul n
add bx,ax
jmp L3
l4:
inc e
RET
INPUT ENDP
MOV AH,4CH
INT 21H
CODES ENDS
END START
uj5u.com熱心網友回復:
資料就沒輸入對吧,INPUT 子程里 BX 首先要置 0 的,正數部分回車后沒進行加和然后就應 ret 回傳了不再繼續下面的負數部分的,最后程式結束的 ret 有問題最好還是用 dos中斷的 AH=4Ch 功能呼叫。uj5u.com熱心網友回復:
正數部分回車后沒有進行加和就應ret回傳了 是為什么啊還有每次輸正數要敲兩次回車 負數敲一次是上面的原因嗎
uj5u.com熱心網友回復:
為什么,求和不是題目之一嘛;然后不 ret 而是你這樣不就繼續下面的計劃是負數部分,要兩次回車的結果。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/142230.html
標籤:匯編語言
上一篇:求大佬解惑
下一篇:abaqus用戶子程式無法呼叫
