그래서 기본 계산기를 만들어야합니다. (내일 시험을 치루고 있습니다)하지만 막혔습니다. 배열에 첫 번째 num, 동작 (+ OR -) 그리고 배열 (number는 1-4 자리가되어야 함)로가는 두 번째 숫자가 나타납니다. 배열에서 모든 숫자를 가져 와서 전체 숫자 (이진수로 변환)로 변환하고, 수학적 작업을 수행하고 해답을 16 진수로 변환하여 인쇄합니까? 첫 번째 숫자를 입력하라는 메시지가 나타나면 사용자가 0을 입력 할 때만 분리 된 기능으로 처리해야합니다. 이것은 내 코드입니다. 내 질문과 코드 (인터넷에서 찾고있는 것과 비슷한 것을 찾을 수 없음)를 이해하시기 바랍니다. 감사합니다 :)함수 및 배열을 사용하는 조립 계산기 (보조 및 추가)
이 잘못data segment
entr_first db 'Please enter first num 1-4 digits:',0ah,0dh,'$'
select_op db 'Please enter operation type + or -:',0ah,0dh,'$'
entr_sec db 'Please enter second num 1-4 digits:',0ah,0dh,'$'
ans db 'Your answer is: $'
num1 db 7 dup('5')
num2 db 7 dup('5')
answer db 8 dup('6')
opr db 1 dup('0')
data ends
sseg segment stack
sseg ends
code segment
assume cs:code,ds:data,ss:sseg
main: mov ax,data
mov ds,ax
call kelet1
call revah
call keletOpr
call revah
call kelet2
call dollar
int 21h
mov ax,4c00h
int 21h
dollar:
mov cx,0
mov si,0
mov cl,num1[si+1]
add si,cx
add si,2
mov num1[si],'$'
mov cx,0
mov si,0
mov cl,num1[si+1]
add si,cx
add si,2
mov num2[si],'$'
ret
revah: mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
ret
kelet1: mov dx,offset entr_first
mov ah,9
int 21h
mov dx,offset num1
mov ah,10
int 21h
ret
keletOpr:mov dx,offset select_op
mov ah,9
int 21h
mov ah,1
int 21h
mov opr[0],al
ret
kelet2: mov dx,offset entr_sec
mov ah,9
int 21h
mov dx,offset num2
mov ah,10
int 21h
ret
code ends
end main
심지어 SO는 문자열을 숫자로 변환하기위한 샘플로 가득합니다 ... 또한 문제를 일으키는 원인을 구체적으로 나타내려면 알고리즘이 필요합니까 아니면 구현을 고집하고 있습니까? 그렇다면 정확히 어디에서? 추신 : 특히 다른 사람들이 도움을 원하면 코드에 주석을 달아주십시오. 이것이 학교 과제라면, 학습 자료를 다시 방문하고 교사와 상담하십시오. – Jester