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, src将 src 复制到 dest
  • operand *dst*, src对 src 和 dest 执行操作数并将结果复制到 dest。例如,sub ax, 7计算ax - 7并将结果放入ax.
  • idiv src将 src 乘以 ax,并将结果放入 ax。 imul乘法也是如此。

这应该足以让你开始。

于 2011-03-20T11:52:43.883 回答
1

一般来说,代码看起来不正确。但无论如何,让我们回顾一下主要部分:

data segment- 声明将用于计算的 3 个字节的数据(但遗憾的是根本不使用)。db- 是字节的声明(与 dw - d eclare word , ...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 回答