回 帖 发 新 帖 刷新版面

主题:[原创]急啊,大哥帮帮忙

看看我的程序哪错了:data segment
     A1 dW 0408
     A2 dW 0209 
     
data  ends
stack  segment para stack'stack'
       db 100 dup(?)
stack  ends
code segment
     assume cs:code,ds:data,ss:stack,es:data
start proc far
begin:push ds
      mov ax,0
      push ax
go:   mov ax,data
      mov ds,ax
      mov es,ax
      CLC
      lea si,A1
      lea bx,A2
      mov al,[si]
      add al,[bx]
      aaa
      mov [di],ax
      mov al,[si+1]
      adc al,[bx+1]
      aaa
      mov [di+1],al
      mov [di+2],bl
      ret
start endp
code ends
     end begin       
   

回复列表 (共2个回复)

沙发

data segment
     A1 dW 0408
     A2 dW 0209 
     
data  ends
stack  segment para stack'stack'
       db 100 dup(?)
stack  ends
code segment
     assume cs:code,ds:data,ss:stack,es:data
begin:
start proc far 
      push ds
      mov ax,0
      push ax
go:   mov ax,data
      mov ds,ax
      mov es,ax
      CLC
      lea si,A1
      lea bx,A2
      mov al,[si]
      add al,[bx]
      aaa
      mov [di],ax
      mov al,[si+1]
      adc al,[bx+1]
      aaa
      mov [di+1],al
      mov [di+2],bl
      ret
start endp
code ends
     end begin 


编译能通过了
哥们,写的太乱了,能加注释就加上啊

板凳

你这个程序编绎可以通过,但是用DEBUG调试时会看出其中有逻辑错误
程序可以这样写,但不知是不是你要的
data segment
     A1 dW 0408h   ;这里要加H
     A2 dW 0209h 
     
data  ends
stack  segment para stack'stack'
       db 100 dup(?)
stack  ends
code segment
     assume 

cs:code,ds:data,ss:stack,es:data
start proc far
begin:push ds
      mov ax,0
      push ax
go:   mov ax,data
      mov ds,ax
      mov es,ax
      CLC
      lea si,A1
      lea bx,A2
      mov ax,[si]              ;这里应该把AL改为AX因为必须修改AH的值
      add al,[bx]
      aaa
      mov [di],ax       ;将0507H存储
      mov al,[si+1]
      add al,[bx+1]      ;这里须有ADD如果用ADC结果会重复加一次进位
      aaa
      mov [di+1],al
      
      mov al,[di]       ;这两条是用于在DEBUG中看结果是否正确
      mov ah,[di+1]      ;在DEBUG中可以看得出最终结果是0707H
      ret
start endp
code ends
     end begin 


朋友不知道你是否满意      

我来回复

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