rooaw 发表于 2021-1-5 15:55:29

汇编语言实验9,可以编译,但是无法运行

逻辑应该没问题?查不出代码哪里写错了还是怎么,求大佬帮忙

assume cs:code

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

code segment
start:
        ;将三行'welcome to masm!'分别显示在12,13,14行中间(上下左右居中)

        ;data段地址 ds:bx ,颜色地址 ds:si
        mov ax, data
        mov ds, ax
        mov bx, 0
        mov si, 16

        ;显示器地址 es:di
        mov ax, 0b800h
        mov es, ax
        mov di, 160*12+160/2-16

       
        mov cx, 3
        s:        mov ax, cx
                mov dx, ax ;存外循环次数到dx

                mov cx, 16
                s1:        mov al, ds:
                        mov es:, al   ;字符放到显示器地址
                        inc di
                        mov al, ds:        ;颜色在 ds:si
                        mov es:, al   ;字符后面跟颜色
                        inc di                       

                        ;到下一个字符
                        inc bx
                loop s1

                add di, 128 ;到显示器下一行
                inc si         ;取下一个颜色
                mov ax, dx
                mov cx, ax ;取出外循环次数
        loop s

        mov ax, 4c00h
        int 21h
       
code ends
end

xjs972797887 发表于 2021-1-5 17:47:07

2个问题      1、Start开始标号要写在有效代码的前面,不要写在注释前,不方便调试         2、28行之后 BX要置0 ,不然你第二、第三行取不到字符

yjcoke 发表于 2021-1-5 18:46:11

我就知道你的结尾 end 后面少个start   你自己看着办吧!

jackz007 发表于 2021-1-5 22:22:58

rooaw 发表于 2021-1-6 17:09:05

yjcoke 发表于 2021-1-5 18:46
我就知道你的结尾 end 后面少个start   你自己看着办吧!

对的,把程序写对后去掉start对比了一下,没有start进入debug看到的指令都不是程序里的指令

rooaw 发表于 2021-1-6 17:09:42

xjs972797887 发表于 2021-1-5 17:47
2个问题      1、Start开始标号要写在有效代码的前面,不要写在注释前,不方便调试         2、28行之后 BX ...

感谢,是忘了初始化bx
页: [1]
查看完整版本: 汇编语言实验9,可以编译,但是无法运行