求Z等于((W-X)/10*Y)的平方
DATA SEGMENT USE16
X DW ?
Y DW ?
W DW ?
Z DW ?
str db 4,0,
INPUT1 DB "PLEASE INPUT W:",0AH,0DH,"$"
INPUT2 DB "PLEASE INPUT X:",OAH,0DH,"$"
INPUT3 DB "PLEASE INPUT Y:",OAH,0DH,"$"
DATA ENDSCODE SEGMENT USE16
ASSUMEN CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,AL
SAL BX,8
MOV AH,1
INT 21H
MOV BL,AL ;BX存放W
MOV DX,OFFSET INPUT2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV SI,AL
SAL SI,8
MOV AH,1
INT 21H ;SI存放X
ADD SI,AL
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV DI,AL
SAL BX,8
MOV AH,1
INT 21H
ADD DI,AL ;DI存放Y
SUB BX,SI
MOV AX,BX
DIV 10
IMUL DI
IMUL AX,AX
CODE ENDS
EDN BEGIN
有什么错误请大家指教
DATA SEGMENT USE16
X DW ?
Y DW ?
W DW ?
Z DW ?
str db 4,0,
INPUT1 DB "PLEASE INPUT W:",0AH,0DH,"$"
INPUT2 DB "PLEASE INPUT X:",OAH,0DH,"$"
INPUT3 DB "PLEASE INPUT Y:",OAH,0DH,"$"
DATA ENDSCODE SEGMENT USE16
ASSUMEN CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,AL
SAL BX,8
MOV AH,1
INT 21H
MOV BL,AL ;BX存放W
MOV DX,OFFSET INPUT2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV SI,AL
SAL SI,8
MOV AH,1
INT 21H ;SI存放X
ADD SI,AL
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV DI,AL
SAL BX,8
MOV AH,1
INT 21H
ADD DI,AL ;DI存放Y
SUB BX,SI
MOV AX,BX
DIV 10
IMUL DI
IMUL AX,AX
CODE ENDS
EDN BEGIN
有什么错误请大家指教
DATA SEGMENT
INPUT1 DB "PLEASE INPUT W:",0AH,0DH,"$"
INPUT2 DB "PLEASE INPUT X:",0AH,0DH,"$"
INPUT3 DB "PLEASE INPUT Y:",0AH,0DH,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,0
MOV DX,0
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,AL
SHL BX,8
MOV AH,1
INT 21H
MOV BL,AL ;BX存放W
MOV DX,OFFSET INPUT2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV SI,AL
SHL SI,8
MOV AH,1
INT 21H ;SI存放X
ADD SI,AL
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV DI,AL
SHL BX,8
MOV AH,1
INT 21H
ADD DI,AL ;DI存放Y
SUB BX,SI
MOV AX,BX
DIV 10
IMUL DI
IMUL AX,AX
MOV DL,AX
MOV AH,2
INT 21H
CODE ENDS
END BEGIN
MOV SI,AL //错,类型不配,改为XOR AH,AH MOV SI,AX
同样的错有多处,如MOV DI,AL ; ADD DI,AL ; MOV DL,AX等
DIV 10 // intel CPU 的DIV不支持立即数,要改MOV BX,10 ; DIV BX
这些只是语法上的,功能上的要找汇编工具汇编运行才能看出来了
INPUT1 DB "PLEASE INPUT W:",0AH,0DH,"$"
INPUT2 DB "PLEASE INPUT X:",0AH,0DH,"$"
INPUT3 DB "PLEASE INPUT Y:",0AH,0DH,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,0
MOV DX,0
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,AL
MOV CL,8
SHL BX,CL
MOV AH,1
INT 21H
MOV BL,AL ;BX存放W
MOV DX,OFFSET INPUT2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
XOR AH,AH
MOV SI,AX
MOV CL,8
SHL SI,CL
MOV AH,1
INT 21H ;SI存放X
XOR AH,AH
ADD SI,AX
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
XOR AH,AH
MOV DI,AX
MOV CL,8
SHL BX,CL
MOV AH,1
INT 21H
XOR AH,AH
ADD DI,AX ;DI存放Y
SUB BX,SI
MOV AX,BX
MOV BX,10
DIV AX
IMUL DI
IMUL AX
MOV DX,AX
MOV AH,2
INT 21H
CODE ENDS
END BEGIN
DATA SEGMENT
INPUT1 DB "PLEASE INPUT W:",0AH,0DH,"$"
INPUT2 DB "PLEASE INPUT X:",0AH,0DH,"$"
INPUT3 DB "PLEASE INPUT Y:",0AH,0DH,"$"
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN: MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,0
MOV CX,0Ah
MOV DX,OFFSET INPUT1
MOV AH,9
INT 21H
IN_W: ;这里开始输入W,W由多个数位组成,如123,用户要
;输入3个字符, 分别是'1','2','3'最后敲回车,回
;车的ASCII是13,所以发现输入的是13,就表示结束
;要把输入的字符转换成数字然后再参与计算
MOV AH,1
INT 21H
CMP AL, 0Dh
jz PRE_IN_X
XOR AH, AH
SUB AL, 30h
XCHG AX, BX
MUL CX
ADD AX, BX
XCHG AX, BX ;BX存放W
JMP IN_W
PRE_IN_X:
MOV DX, OFFSET INPUT2
MOV AH, 9
INT 21H
IN_X:
MOV AH, 1
INT 21H
CMP AL, 0Dh
jz PRE_IN_Y
XOR AH, AH
SUB AL, 30h
XCHG AX, SI
MUL CX
ADD AX, SI
XCHG AX, SI ;SI存放X
JMP IN_X
PRE_IN_Y:
MOV DX, OFFSET INPUT3
MOV AH, 9
INT 21H
IN_Y:
MOV AH, 1
INT 21H
CMP AL, 0Dh
jz PRE_CALC
XOR AH, AH
SUB AL, 30h
XCHG AX, DI
MUL CX
ADD AX, DI
XCHG AX, DI ;DI存放Y
JMP IN_Y
PRE_CALC:
SUB BX, SI
MOV AX, BX
DIV CX
IMUL DI
IMUL AX
;到这里就是计算完成了,结果就在DX:AX中
;接下来就是把结果转换成字符串,自己写函数吧
MOV AH, 2
INT 21H
CODE ENDS
END BEGIN