ypyangpong 发表于 2013-10-13 21:33:43

来人帮我看哈 哪错了 急急急。。。。。

显示第25行 ,第51行, 第63行 错了      代码如下   ,右边表好了行号   大家帮我看看


assume cs:code,ss:stack
stack segment
   db 256 dup (0)
stack ends
code segment
start:
   mov al,1;0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行
   mov bl,1;0~7表示8中不同颜色
   call setscreen
   mov ax,4c00h
   int 21h
   
setscreen: jmp ssstart
tabledw cls,sc,sbc,froll
tcolordb 00000000b,00000001b,00000010b,00000011b,
   00000100b,00000101b,00000110b,00000111b   
   
tbcolordb 00000000b,00010000b,00100000b,00110000b,
   01000000b,01010000b,01100000b,01110000b
ssstart:
   mov ah,0
   add ax,ax
   call word ptr table                     ;第25行
   ret
cls:
   push ax
   mov ax,0b800h
   mov ds,ax
   mov bx,0
   mov cx,2000
clsloop1: mov byte ptr ,' '
   add bx,2
   loop clsloop1
   pop bx
   pop cx
   pop ds
   pop ax
   ret
   
sc:   
   push ax
   mov ax,0b800h
   mov ds,ax
   pop ax
   mov al,bl
   mov ah,0
   mov bx,1
   mov cx,2000
scloop1: mov byte ptr ,byte ptr tcolor         ;第51行
   add bx,2
   loop scloop1
   ret
   
sbc:
   push ax
   mov ax,0b800h
   mov ds,ax
   mov al,bl
   mov bx,1
   mov cx,2000
sbcloop1: mov byte ptr ,byte ptr tbcolor         ;第63行
   add bx,2
   loop sbcloop1
   ret
   
froll:
   mov ax,0b800h
   mov ax,ds
   mov si,160
   mov ax,0b800h
   mov es,ax
   mov di,0
   mov cx,24*160
   cld
   rep movsb
   ret
code ends
end start

tsembrace 发表于 2013-10-14 10:26:31

完整程序没细看,单就那几行:
25行看不出错误
51、63行内存之间的数据传递应通过寄存器中转

ypyangpong 发表于 2013-10-14 10:41:50

我昨天把他该成BX貌似就好了,,,【address】中应该只能用BX,或者SI,或者DI才能定址,,谢谢你。。。

ypyangpong 发表于 2013-10-14 12:43:01

tsembrace 发表于 2013-10-14 10:26 static/image/common/back.gif
完整程序没细看,单就那几行:
25行看不出错误
51、63行内存之间的数据传递应通过寄存器中转

你说的是对的   今天又出错了    按你说的就好了    谢谢 啊啊

qijicxl 发表于 2013-10-15 14:16:40

看来已经解决了。
页: [1]
查看完整版本: 来人帮我看哈 哪错了 急急急。。。。。