回 帖 发 新 帖 刷新版面

主题:[转帖]求助高手

用汇编语言编写程序,用来计算表达式的值
W=(Z-(X*Y-320))/X

回复列表 (共6个回复)

沙发

去看看书,有类似的

板凳


用堆栈编吧

3 楼

说得不清楚,这些变量都是什么类型的?字长多少?

4 楼


字数据

5 楼

.model small
.stack

.data
x dw             1  ;x的数值
y dw             4  ;y的数值
z dw             3  ;z的数值
w dw             ?  ;存储w的数值

.code
.startup

mov ax,x
mul word ptr y       ;x*y->ax

sub ax,320           ;ax-320->ax

mov bx,z
sub bx,ax            ;z-ax->bx

mov ax,bx
xor dx,dx
div word ptr x       ;bx/x->ax

mov w,ax             ;ax->w

.exit
end
;你自己研究研究就知道了,我已经分段了.
;用debug打开能发现结果(结果为整数,不整则截断取整)

6 楼


我来完善上楼的答案

.model small
.stack

.data
x dw             ?  ;x的数值
y dw             ? ;y的数值
z dw             ? ;z的数值
w dw             ?  ;存储w的数值

.code
.startup
mov   bx,0
call  input
mov   x,bx
mov ax,x
call  input
mov   y,bx
mul word ptr y       ;x*y->ax

sub ax,320           ;ax-320->ax
call  input          ;input->z      保存在bx

sub bx,ax            ;z-ax->bx

mov ax,bx
xor dx,dx
div word ptr x       ;bx/x->ax

mov w,ax             ;ax->w
input   proc   near
        push   ax
        
        push   cx
        push   dx
        mov   bx,0
 in_gain:  mov   ah,01h
        int   21h         
        cmp   al,0dh        ;是否为回车
        je    over1
        sub   al,30h
        jl    over1               
        cmp   al,9d
        jg    over1
        cbw               
        xchg  ax,bx
        mov   cx,10d
        mul   cx
        xchg  ax,bx
        add   bx,ax 
        jmp   in_again
over1:  pop    dx
        pop    cx
        
        pop    ax
        ret
input   endp
.exit
end


其本这样
没调式过
可能有错误


这 程序实现x,y,z自己输入
而不是 在数据段定义


我来回复

您尚未登录,请登录后再回复。点此登录或注册