tstyle 发表于 2021-9-25 16:10:34

王爽 汇编语言 实验九 求助

求各位大佬帮忙看看我这样做为什么显示不对{:5_96:}

assume cs:code,ds:data

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

code segment

start:       
        mov ax,data
        mov ds,ax

        mov ax,0b872h
        mov es,ax

        mov si,0
        mov bx,0
        mov cx,16
       
        s:
        mov ah,0
        mov al,
        mov es:,al
       
        inc bx
        inc si
        inc si
        loop s
       
        mov si,0
        mov bx,0
        mov cx,16

        s0:
        mov ah,0
        mov al,
        mov es:,al
        inc bx
        inc bx
        loop s0
       
        mov bx,0
        mov cx,16

        s1:
        mov ah,0
        mov al,
        mov es:,al
        inc bx
        inc bx
        loop s1
       
        mov bx,0
        mov cx,16

        s2:
        mov ah,0
        mov al,
        mov es:,al
        inc bx
        inc bx
        loop s2
       
        mov ax,4c00h
        int 21h
       
code ends
end start

tstyle 发表于 2021-9-25 16:12:33

发不了图片,就是在dos下运行后,我的屏幕中间只显示了一行蓝色背景绿色字体

JingHe1997 发表于 2021-9-25 16:24:07

兄弟,你这个没有换行啊,一直在同一行输出

JingHe1997 发表于 2021-9-25 16:36:42

assume cs:code,ds:data

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

code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 0b872h
    mov es, ax

    mov di, 0
    mov bx, 0
    mov cx, 16

    ; 第一行
    s0:
    mov al, ds:
    mov ah, ds:
    mov es:, ax
    add di, 2
    inc bx
    loop s0

    mov di, 0
    mov bx, 0
    mov cx, 16
    ;第二行
    s1:
    mov al, ds:
    mov ah, ds:
    mov es:160, ax ; 这里换行
    add di, 2
    inc bx
    loop s1

    mov di, 0
    mov bx, 0
    mov cx, 16
    ;第三行
    s2:
    mov al, ds:
    mov ah, ds:
    mov es:320, ax ; 这里换行
    add di, 2
    inc bx
    loop s2

    mov ax, 4c00h
    int 21h
code ends
end start

tstyle 发表于 2021-9-25 17:16:35

本帖最后由 tstyle 于 2021-9-25 17:19 编辑

JingHe1997 发表于 2021-9-25 16:24
兄弟,你这个没有换行啊,一直在同一行输出

谢谢兄弟回复!{:5_110:} 其实我当时也是三行输出的,但是我理解错了就写成在一行输出。可是我原来的代码也不行,可以帮我看看我这样写为什么输出不对吗?谢谢!

代码如下:

assume cs:code,ds:data

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

code segment

start:      
      mov ax,data
      mov ds,ax

      mov ax,0b872h
      mov es,ax

      mov si,0
      mov bx,0
      mov cx,16
      
      s:                           ; s循环在偶数位输入字符
      mov al,
      mov es:680h,al
      mov es:720h,al
        mov es:7c0h,al
      inc bx
      add si,2
      loop s
      
      mov si,0
      mov bx,0
      mov cx,16

      s0:                                 ;奇数位输入颜色
      mov al,
      mov es:681h,al          ;第一行
      add bx,2
      loop s0
      
      mov bx,0
      mov cx,16

      s1:
      mov al,
      mov es:721h,al          ;第二行
      add bx,2
      loop s1
      
      mov bx,0
      mov cx,16

      s2:
      mov al,
      mov es:7c1h,al          ;第三行
      add bx,2
      loop s2
      
      mov ax,4c00h
      int 21h
      
code ends
end start

JingHe1997 发表于 2021-9-25 17:59:28

、、 前面加上ds就可以了。当你用具体值表示偏移地址时,前面得加上段寄存器,不然编译器不知道你想表达啥{:10_279:}

tstyle 发表于 2021-9-25 18:18:35

JingHe1997 发表于 2021-9-25 17:59
、、 前面加上ds就可以了。当你用具体值表示偏移地址时,前面得加上段寄存器,不然编译器不知 ...

谢谢兄弟,已经解决了。忘了这点了{:10_319:}
页: [1]
查看完整版本: 王爽 汇编语言 实验九 求助