daya48 发表于 2012-1-7 16:17:31

实验9遇到的问题

本帖最后由 daya48 于 2012-1-7 16:20 编辑

运行程序,屏幕没显示,是怎么回事?

assume cs:code,ds:data,ss:stack

data segment

db 'welcome to masm!'
db 02h,24h,71h   
data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start:         mov ax,data
               mov ds,ax
               mov ax,0b800h                               ;显存段地址
               mov es,ax
               mov ax,stack
               mov ss,ax
               mov sp,16
               mov bp,0                                        ;字符属性变量
               mov cx,3                                        ;字符显示3行的循环数
      
      s0:    push cx
               mov si,0                                           ;字符地址
               mov bx,1920                                  ;行变量
               mov di,0                                       ;列变量
               mov cx,16                                    ;16个字符的循环数
      
      s1:    mov al,                                       ;读取数据段第零个字符
               mov es:,al                     ;写入显存第零个字符
               mov al,ds:                           ;读取第一行显示字符的属性
               mov es:,al                         ;向显存写入第一行字符的属性
               inc si
               add di,2
               loop s1
               
               add bx,160
               inc bp
               pop cx
               loop s0
               
               mov ax,4c00h
               int 21h

code ends

end start
               

小马过河 发表于 2012-1-7 16:36:50

      mov bx,1920   行变量应放在循环外,要不然add bx,160 这句不起作用.还有 mov al,ds:   这个不是第一个字符的属性,应该是16,因为从0开始16个字节0~15

daya48 发表于 2012-1-7 16:39:40

非常感谢啊,按照你说的我改了,果然显示了~谢谢了

daya48 发表于 2012-1-7 16:40:32

小马过河 发表于 2012-1-7 16:36 static/image/common/back.gif
mov bx,1920   行变量应放在循环外,要不然add bx,160 这句不起作用.还有 mov al,ds:   这个不是 ...

谢谢了~你是对了
页: [1]
查看完整版本: 实验9遇到的问题