data segment
N dw 5
sum dw 0
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
s1:mov cx,N
mov ax,1
mov bx,1
again:mul bx
inc bx
loop again
add sum,ax
sub N,1
cmp N,1
jnb s1
mov dl,sum
mov ax,0200h
int 21h
mov ah,4ch
int 21h
code ends
end start
这是我的程序,请问有什么错吗,怎么改
mov dl,sum ; 除了这里错误,其它的没问题。汇编学得不错
mov ax,0200h ; 错误1: sum 是dw类型,dl是byte类型,数据类型与寄存器不匹配。
int 21h ;错误2: 21H中断的2#子功能,是输出一个字符到屏幕上,不是把你的结果输出 ;到屏幕上
;正确做法,写一个打印10进制数的函数,调用这个函数
; print (ax) on screen