; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
; 编写计算F=(V-(X*Y+Z-5000))/X的程序,其中X、Y、Z、V均为有符号16位二进制数
;先定义变量
DATA SEGMENT
X DW 300H
Y DW 600H
Z DW 890H
V DW 320H
F DW ?,? ;只定义,未初始化
DATA ENDS
;接下来,编写代码段内容
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV AX, X ;X*Y
IMUL Y ;有符号相乘,并将乘积送AX
MOV BX, AX
MOV CX, DX ;DX为相乘后结果的默认高八位
MOV AX, Z ;X*Y+Z
CWD ;将Z扩展成双字 高位DX 低位AX
ADD BX, AX ;无符号加
ADC CX, DX ;有符号加
MOV AX, 5000 ;扩展后,默认DX为高八位
CWD
SUB BX, AX ;X*Y+Z-5000
SBB CX, DX
MOV AX, V ;V-(X*Y+Z-5000)
CWD
SUB AX, BX
SBB DX, CX
IDIV X ;V-(X*Y+Z-5000)/X 后将结果送F
MOV F, AX
MOV F+2, DX
MOV AH, 4CH ;计算结束,代码执行结束
INT 21H
CODE ENDS
END START