求高手给我的汇编语言程序纠错,急,急急!!! 只要获得正确的编码,会最快奖赏,原题w=(v-(x*y+z-540))/x
DATASEGMENTXdb10Ydb54Zdb300Vdb1000Wdb?DATAENDSCODESEGMENT;定义代码段ASSUMEDS:DATA,CS:CODE,...
DATA SEGMENT
X db 10
Y db 54
Z db 300
V db 1000
W db ?
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME DS:DATA,CS:CODE,SS:STACK
START: MOV AX,DATA
MOV DS,AX ;DATA→AX
MOV AX,X
IMUL Y ;(X)*(Y)→DX:AX
MOV CX,AX
MOV BX,DX ;(DX:AX)→(BX:CX)MOV AX,Z
CWD ;(Z)符号扩展ADD CX,AX
ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX)SUB CX,540
SBB BX,0 ;(BX:CX)-540→(BX:CX)MOV AX,V
CWD ;(V)符号扩展SUB AX,CX
SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX)IDIV X ;(DX:AX)/X
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS ;退出DOS 状态END START 展开
X db 10
Y db 54
Z db 300
V db 1000
W db ?
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME DS:DATA,CS:CODE,SS:STACK
START: MOV AX,DATA
MOV DS,AX ;DATA→AX
MOV AX,X
IMUL Y ;(X)*(Y)→DX:AX
MOV CX,AX
MOV BX,DX ;(DX:AX)→(BX:CX)MOV AX,Z
CWD ;(Z)符号扩展ADD CX,AX
ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX)SUB CX,540
SBB BX,0 ;(BX:CX)-540→(BX:CX)MOV AX,V
CWD ;(V)符号扩展SUB AX,CX
SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX)IDIV X ;(DX:AX)/X
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS ;退出DOS 状态END START 展开
2个回答
展开全部
DATA SEGMENT
X db 10
Y db 54
Z db 200
V db 200
W dd ?;这个要用双字
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE;这地方你前面又没有加堆栈段,写个堆栈段干嘛
START:
MOV AX,DATA
MOV DS,AX
MOV AX,X;这个寄存器最好改一下,改成8位的不然要有警告,因为x是字节型
IMUL Y
MOV CX,AX
MOV BX,DX
CWD
ADC BX,DX
SBB BX,0
CWD
SBB DX,BX
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS
END START ;退出DOS 状态END START
X db 10
Y db 54
Z db 200
V db 200
W dd ?;这个要用双字
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE;这地方你前面又没有加堆栈段,写个堆栈段干嘛
START:
MOV AX,DATA
MOV DS,AX
MOV AX,X;这个寄存器最好改一下,改成8位的不然要有警告,因为x是字节型
IMUL Y
MOV CX,AX
MOV BX,DX
CWD
ADC BX,DX
SBB BX,0
CWD
SBB DX,BX
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS
END START ;退出DOS 状态END START
展开全部
//漏掉的东西比较多 下面的编译和运行正确
DATA SEGMENT
X dw 10
Y dw 54
Z dw 300
V dw 1000
W dw ?
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX ;DATA→AX
MOV AX,X
IMUL Y ;(X)*(Y)→DX:AX
MOV CX,AX
MOV BX,DX ;(DX:AX)→(BX:CX)MOV AX,Z
MOV AX,Z ;这里你漏了
CWD ;(Z)符号扩展ADD CX,AX
ADD CX,AX ;这里你也漏了
ADC BX,DX
SUB CX,540 ;(BX:CX)+(DX:AX)→(BX:CX)SUB CX,540
SBB BX,0 ;(BX:CX)-540→(BX:CX)MOV AX,V
MOV AX,V
CWD ;(V)符号扩展SUB AX,CX
SUB AX,CX
SBB DX,BX
IDIV X ;(DX:AX)-(BX:CX)→(DX:AX)IDIV X ;(DX:AX)/X
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS ;退出DOS 状态END START
end START
DATA SEGMENT
X dw 10
Y dw 54
Z dw 300
V dw 1000
W dw ?
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX ;DATA→AX
MOV AX,X
IMUL Y ;(X)*(Y)→DX:AX
MOV CX,AX
MOV BX,DX ;(DX:AX)→(BX:CX)MOV AX,Z
MOV AX,Z ;这里你漏了
CWD ;(Z)符号扩展ADD CX,AX
ADD CX,AX ;这里你也漏了
ADC BX,DX
SUB CX,540 ;(BX:CX)+(DX:AX)→(BX:CX)SUB CX,540
SBB BX,0 ;(BX:CX)-540→(BX:CX)MOV AX,V
MOV AX,V
CWD ;(V)符号扩展SUB AX,CX
SUB AX,CX
SBB DX,BX
IDIV X ;(DX:AX)-(BX:CX)→(DX:AX)IDIV X ;(DX:AX)/X
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS ;退出DOS 状态END START
end START
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询