0

こんにちは私はこれがどのように機能しているか本当にわかりません

data segment
 db 22
 db 7
 db 5
 db 113
data ends
code segment
 assume cs:code,ds:data
start:mov si,500H
 mov di,1500H
 mov ah,0
 mov al,22
 cbw
 sub ax,7
 mov cx,5
 idiv cx
 mov bx,113
 imul bx
 mov dl,ax
 mov [di],al
 code ends
end start

私は本当にこのプログラムで何が起こっているのかわからないので、どんな助けもいただければ幸いです

4

3 に答える 3

1

ここにいくつかの役立つヒントがあります:

  • mov dst, srcsrcをdestにコピーします
  • operand *dst*, srcsrcとdestでオペランドを実行し、結果をdestにコピーします。たとえば、結果をsub ax, 7計算して。に入れます。ax - 7ax
  • idiv srcsrcにaxを掛け、その結果をaxに入れます。 imul乗算でも同じことをします。

これはあなたが始めるのに十分なはずです。

于 2011-03-20T11:52:43.883 に答える
1

一般的に、コードは正しく見えません。しかしとにかく、主要な部分を確認しましょう:

data segment-calcに使用される3バイトのデータを宣言します(ただし、残念ながらまったく使用されません)。db-バイトの宣言です(dwと比較してください--d eclare w ord、...) code segment-プログラムコードがそこから始まることを宣言します

完全に計算を実行するには、次のことだけが必要です。

mov AX, 22; place number 22 to processor register AX
sub AX, 7; now we have subtract 7 from AX and place it back to AX
mov CX, 5; 5 is placed to CX register
xor DX, DX; per comment of @GJ
idiv cx ; divide AX / CX
mov bx,113; BX now contains 113
imul bx; at last mul result of AX on BX and place back to AX
于 2011-03-20T11:54:31.053 に答える
0

単純:

mov word[c],((22-7)/5)*113
于 2014-02-07T09:53:23.400 に答える