广珠城轨碧江站时刻表:九九乘法表汇编程序 帮看看错在那里?

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 07:19:44
data segment
bar db ?,'*',?,'=',4 dup(' '),'$'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,9
lop1:
push cx
mov al,cl
mov bl,al
or al,30h
mov [bar],al
lop2:
push cx
mov al,cl
or al,30h
mov [bar+2],al
mov al,cl
call printit
pop cx
loop lop2
call newline
pop cx
loop lop1
mov ax,4c00h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;; newline proc ;;;;;;;;;;;;;;;;;;;;;;;;;;
newline proc
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
newline endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;; printit proc ;;;;;;;;;;;;;;;;;;;;;;;;;
printit proc
push bx
xor ah,ah
mul bl
mov bl,0ah
div bl
or al,30h
or ah,30h
mov [bar+4],ax
mov dx,offset bar
mov ah,9
int 21h
pop bx
ret
printit endp
code ends
end start
=============
编译提示:说第50行有错,invalid instruction operands ( mov [bar+4],ax )
请问怎么改,谢谢

数据长度不匹配吧
bar 定义为db 8位 而ax 16位
改成这样试试
mov word ptr [bar+4],ax