骇客king 发表于 2015-6-3 11:38:16

关于一个简单程序我是新人多谢多谢 [


assume cs:code,ds:data
      data segment
                msg db "hello world"
      data ends
      
code segment
      start:
      mov ax,data
      mov ds,ax
      mov bx,0b800h
      mov es,bx
      mov cx,11
      mov si,0
      mov bx,0
      mov ah,01000010b
      s:mov al,ds:
      mov es:,al
      mov es:,ah
      inc si
      add bx,2
      loop s
      mov ax,4c00h
      int 21h
code ends
end start
请问一下,以上代码为什么不能输出hello world呢~

ryxcaixia 发表于 2015-6-3 11:38:17

assume cs:code,ds:data
      data segment
               db "hello world"
      data ends

code segment
      start:
      mov ax,data
      mov ds,ax
      mov bx,0b800h
      mov es,bx
      mov cx,11
      mov si,0
      mov bx,0
      mov ah,00000010b
      s:mov al,ds:
      mov es:+160],al
      mov es:+161],ah
      inc si
      add bx,2
      loop s
      mov ax,4c00h
      int 21h
code ends
end start

因为楼主 你默认选择的是从第一行 第一列开始输出
但是! 因为在dos窗口下, 每运行一次, 屏幕都会上翻一行!
所以 要想看到屏幕上第一行输出东西, 最起码要在第二行输出, 而每一行是160个字节, 故而加



骇客king 发表于 2015-6-3 16:17:58

多谢,解决问题了~怎么给你分啊

骇客king 发表于 2015-6-3 16:19:33

那两个红色160太明显了,一眼就看到了,多谢多谢

ygyuuu 发表于 2015-6-4 11:47:12

{:1_1:}

alexzp 发表于 2015-6-10 19:46:59

666

fast 发表于 2015-6-21 02:40:24

{:1_1:}
页: [1]
查看完整版本: 关于一个简单程序我是新人多谢多谢 [