最初の試行:既に定義済みのデータを入力しています。ユーザーの入力があると私の他のコードは動作しません。 /私はTASMに非常に新しいですし、それは私にユーザー入力をCXに入力
を殺している:それはちょうど私に間違った答えを与える.model small
.stack
.data
message db 10,13,"The Answer is ..."," ","$"
space db 10,13,"$"
.code
mov ax,@data
mov ds,ax
mov ah,01 ;user input 1 -> al -> cl******
int 21h
mov cl,al
;? x ? = [?]---------------
mov cx,? ;cx = ?, 0
mov bx,0 ;bx = 0, ?[+bx]
mov ah,01 ;user input 2 -> al -> bl******
int 21h
mov bl,al
again1:
add bx,? ;bx = last count of bx
loop again1
;[?] x ? = ??---------------
mov cx,bx ;cx = ?, 0
mov bx,0 ;bx = 0, ?[+bx]
mov ah,01 ;user input 3 -> al -> bl******
int 21h
mov cl,al
again2:
add bx,? ;bx = TOTAL# -> ax(ah,al)
loop again2
mov ax,bx
;TOTAL# = Print "#1stDigit and #2ndDigit"------2x2x5=20
mov cx,65535 ;cx = 65,535 times (almost infinite # of loops)
mov bl,0 ;bl = 0, 1, 2, 3, 4, 5, 6 <-COUNT#
;al = TOTAL#(-10),#(-10),#(-10),#(-10),#(-10),#(-10), ......FINAL#
again3:
sub al,10
cmp al,10 ;al(FINAL#) is less than 10
jl next ;go to "NEXT"
inc bl
loop again3
next: ;NEXT
mov ah,09
lea dx,message
int 21h
add al,30h ;al = FINAL# + 30 = when printed is equals to "FINAL# real value"
mov cl,al
add bl,31h ;bl = COUNT# + 30 = when printed is equals to "COUNT# real value"
mov dl,bl ;print 1st digit
mov ah,02
int 21h
mov dl,cl ;print 2nd digit
mov ah,02
int 21h
mov ah,09
lea dx,space
int 21h
;2x2x16 =64
mov ah,4ch
int 21h
end
:ここ
.model small
.stack
.data
message db 10,13,"Multiply 2 x 2 x 16 ="," ","$"
space db 10,13,"$"
.code
mov ax,@data
mov ds,ax
;2 x 2 = [4]---------------
mov cx,2 ;cx = 2, 1, 0
mov bx,0 ;bx = 0, 2, 4
again1:
add bx,2 ;bx = 4
loop again1
;[4] x 16 = 64---------------
mov cx,bx ;cx = 4, 3, 2, 1, 0
mov bx,0 ;bx = 0,16,32,48,64
again2:
add bx,16 ;bx = 64 -> ax(ah,al)
loop again2
mov ax,bx
;64 = Print "6 and 4"------
mov cx,65535 ;cx = 65,535 times (almost infinite # of loops)
mov bl,0 ;bl = 0, 1, 2, 3, 4, 5, 6
;al = 64(-10),54(-10),44(-10),34(-10),24(-10),14(-10), 4
again3:
sub al,10
cmp al,10 ;al(4) is less than 10
jl next ;go to "NEXT"
inc bl
loop again3
next: ;NEXT
mov ah,09
lea dx,message
int 21h
add al,30h ;al = 4 + 30 = "34" when printed is equals to "4"
mov cl,al
add bl,31h ;bl = 6 + 30 = "36" when printed is equals to "6"
mov dl,bl ;print 6
mov ah,02
int 21h
mov dl,cl ;print 4
mov ah,02
int 21h
mov ah,09
lea dx,space
int 21h
;2x2x16 =64
mov ah,4ch
int 21h
end
は、ユーザーの入力を有するものです
基本的に、私はcx
にUSER INPUTを入れる方法を知らない。私はちょうどmov,ah 01h
を使用する必要があります。つまり、ユーザーは1桁しか入力できません。
PLUS、FINAL ANSWERが3桁の数字の場合はもう1つ問題があります。
例、2 x 2 x 16 = 64
(唯一の安全な、2桁)
しかし5 x 3 x 9 = 135
と、私は3桁の答えのためのロジックを得ることはありません (私はプログラムを実行すると、私にだけ5を与えます)。
ああ本当にありがとうございます..私は正しい答えを与えていないので、入力を取った後に何か間違っています:/私は何が間違って理解していません – Exu
もう一度xDをチェックさせてください – Exu