王爽 汇编语言 实验九 求助
求各位大佬帮忙看看我这样做为什么显示不对{: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
发不了图片,就是在dos下运行后,我的屏幕中间只显示了一行蓝色背景绿色字体 兄弟,你这个没有换行啊,一直在同一行输出 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: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 、、 前面加上ds就可以了。当你用具体值表示偏移地址时,前面得加上段寄存器,不然编译器不知道你想表达啥{:10_279:} JingHe1997 发表于 2021-9-25 17:59
、、 前面加上ds就可以了。当你用具体值表示偏移地址时,前面得加上段寄存器,不然编译器不知 ...
谢谢兄弟,已经解决了。忘了这点了{:10_319:}
页:
[1]