汇编程序没有错误的结果

时间:2014-01-16 10:27:31

标签: assembly

我是装配工的新手,我不确定我制作的这个小程序有什么问题。它所做的一切都是+ b * c。该程序适用于tasm,tlink和一切。它甚至告诉我给a,b,c赋值,但结果就像50行符号......我得不到它。

dosseg              
.model small            
.stack          
.data               
mesaj_a  db 13,10,' Introduceti numarul a:$'    
mesaj_b  db 13,10,' Introduceti numarul b:$'   
mesaj_c  db 13,10,' Introduceti numarul c:$'   
afis_rez  db 13,10,' Rezultat:$'   
.code                   
pstart:
    mov ax,@data        
    mov ds,ax  
;--------------        
    mov dx, offset mesaj_a     
    mov ah,09          
    int 21h        
    mov ah, 0ah        
    int 21h        
    mov  bx,ax         
;----------------
    mov dx, offset mesaj_b    
    mov ah,09         
    int 21h        
    mov ah, 0ah        
    int 21h        
    mov  cx,ax      

;----------------
    mov dx, offset mesaj_c     
    mov ah,09            
    int 21h          
    mov ah, 0ah        
    int 21h        
;---------------
    mul cx               
    add  ax,bx         
    mov  bx,ax    

;---------------
    mov dx, offset afis_rez   
    mov ah,09             
    int 21h          
    mov dx,bx         
    int 21h       
;---------------
    mov ax, 4ch        
    int 21h  
end  pstart   

1 个答案:

答案 0 :(得分:0)

mov dx,bx         
int 21h   

打印数字没有DOS中断。您必须自己将数值转换为字符串,然后使用INT 21H / AH=9打印字符串。


此外,这一行:

mov ax, 4ch        

应该是:

mov ax,4c00h

(函数编号需要进入AH,这是AX的上半部分)