自问自答啦!!!!
第一个问题 : 因为我在int16号中断前没有将 ah 功能号 设置为 0
第二个问题: 标号不会影响data的排位,代码区跟资料区一般都会 间隔 100,100是十六进制数
第三个问题: 现在还不清楚,不知道编译器是从哪里抠出来的值
第四个问题: 我现在已经正常实现我要的功能了 附上代码
assume cs:code,ds:data
data segment
yan db 4,2,1
data ends
code segment
start:
mov ax,0b800h
mov ds,ax
mov bx,160*12+110*2
mov ax,data
mov es,ax
mov si,0
mov cx,3
kai:
mov ah,0
sti
int 16h ;中断16h 放在循环中不能被执行,而是跳过去了,在循坏外可以正常执行
mov ds:[bx],al
mov dl,es:[si] ; 定的值不对 我的值储存在 1ca4:0010中 并没有占用1ca4:0的位置 ,可能是yan标志造成的,定的值 所有的段寄存器加 偏移0
mov byte ptr ds:[bx+1],dl
mov byte ptr ds:[bx+2],0
add bx,4
inc si
loop kai
mov ax,4c00h
int 21h
code ends
end start
|