回 帖 发 新 帖 刷新版面

主题:菜鸟和我一起写程序之二

今天,我们来写一个求w=(v-(x*y+z-540))/x 式子里面的变量都存在相应的大写字母里面的,不过这些变量都是DW内型的,我们求的结果要放在双字变量W里面
data segmeng 
x dw 200
y dw 400
z dw 600
v dw 100000
w dw 2 dup (?)  ;或者w dd ?  也可以的
data ends
stack segment 
db 200 dup(0)
stack ends
code segment
asssuem ds:data,cs:code,ss:stack
start:mov ax,x
      mov bx,y
      imul bx   ; dx:ax  ,符号乘法
     mov cx,dx
     mov bx,ax
  mov ax,z
  cwb  ;拓展符号 将 Z变成一个三十二位的数字
  add bx,ax
  adc cx,dx    ;进位加法,cf=1 则直接加一上去,=0 加0
  sub bx,540
  sdc cx,0
  mov ax,v
  cwb
  sub ax,bx
  sdc dx,cx
  idiv x     ;符号除法
  mov [w],ax
  mov [w+2],dx
 mov ax,4c00h
 int 21h
code ends
code
 

回复列表 (共2个回复)

沙发


da 大家那里不懂 就发帖子 给我,我会给你满意的答案的

板凳


a4099369大哥   你是不是忘记了格式?
在代码段开始  需要把段地址装入相应的段寄存器
start:mov ax,data
      mov ds,ax
这个不要加上?


cwb  ;拓展符号 将 Z变成一个三十二位的数字   应该是cwd吧  我在书上面看的是cwd

sdc cx,0  sdc指令是什么意思?我在书上面没查到这个指令啊

stack segment 
db 200 dup(0)
stack ends
堆栈段一般有什么作用  db 200 dup(0)这句代码是什么意思 ?


我来回复

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