data SEGMENT
msg1 dw 12,13,14,15,16,17,18,19,20,21,'$'
msg2 dw 0,0,0,0,0,0,0,0,0,0,'$'
r db 0 ;储存余数
t db 0 ;储存商
data ENDS
code SEGMENT
ASSUME CS:code,DS:data
start:
MOV AX,data
MOV DS,AX
mov si,0 ;bdbkfdfs
next: cmp si,20
jz exit
mov ax,2
div msg1[si] ;判断是否为奇数
mov r,ah
cmp r,0
jns jum ;若是,跳转至jum
mov ax,msg1[si]
mov msg2[si],ax ;dvbhbfjshdfs
add si,2
jmp next
jum: mov ax,10 ;dbshdfsd
div msg1[si]
mov r,ah
mov t,al
mov bl,10
mul bl
add ax,ah ;dbfshbdfsd
mov msg2[si],ax
add si,2
jmp next
exit:
mov ah,10h
int 21h
code ENDS
END start
------解决思路----------------------
感觉你 div 指令理解有误,div ?? 是 ax/?? 而非 ??/ax
------解决思路----------------------
刚学汇编 7 天,就要写出来数组打印功能,有些要求高了。还是建议照着教材按部就班地来,开始时,一般都是在 debug 里调试运行查看结果的吧,尽管对你这样的程序要求来说,有些不那么直观。
将数组打印出来,一般就是一个循环,循环体内打印一个数据;数据的打印,网上有很多例子可参考的,或者下个 irvine16.lib 来看看它的 WriteInt() 子程。
------解决思路----------------------
同意楼上,div指令用法不对。
div是整除指令,被除数默认放在ax中(当然也有放在dx和ax中的,暂时不管),操作数为除数,商放在al中,余数放在ah中。
表示4/3,得1放在al中,余1放在ah中。
mov ax,4
mov bl,3
div bl
要把字符串显示出来可以用dos中断的功能,具体参考http://blog.csdn.net/a1193561652/article/details/42326753
不过你们老师只是想让你们用debug查看结果吧。