|

楼主 |
发表于 2016-7-30 08:21:28
|
显示全部楼层
自问自答啦!!!!
第一个问题 : 因为我在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
复制代码 |
|