注册 登录
编程论坛 汇编论坛

在屏幕上把“welcome to masn”显示出来。。。程序为什么不能显示

nan1888 发布于 2011-06-20 14:57, 459 次点击
在屏幕上把“welcome to masn”显示出来。。。程序为什么不能显示
assume ds:A, cs:B, ss:X
A segment
    db 'welcome to masn!'
    A ends
    X segment
dw 8 dup (0)
X ends   
    B segment
        start:mov ax,A
        mov ds,ax
        mov bx,0
        mov ax,X
        mov ss,ax
        mov sp,10h
        mov ax,0b123h
        mov es,ax
    mov si,0
        mov cx,16
        s:push cx
        mov al,ds:[bx]
        mov es:[si],al
        inc bx
        sub si,2
        loop s
        push si
        mov al,02h
        mov si,1
        mov cx,16
        s1:
        mov es:[si],al
        sub si,2
        loop s1
        pop cx
        pop si
        mov ax,4c00h

        int 21h
B ends
end start
3 回复
#2
秋逝2011-06-20 16:31
这不是32为的arm嵌入式汇编程序吧?
#3
ansic2011-06-20 17:07
显存地址应该是B800H。给你个范例,自行研究一下

程序代码:

;
;
This Program Compiled Sucess by Masm 6.15
;
assume  cs:code,ds:data,ss:stack
data    segment
        db      'welcome to masm!'         ;定义要显示信息
data    ends
stack   segment stack                      ;定义栈段(可有可无)
        db 64 dup (0)
stack   ends
code    segment
start:
        mov ax,data                        ;指明数据段
        mov ds,ax

        mov ax,0b800h                      ;指明附加段,显存地址是从B800H开始的
        mov es,ax

        mov si,0                           ;字符首地址
        mov di,160*12+40*2                 ;目标地址,后面的表达式可以根据需要自行调节

        mov cx,16                          ;循环次数
        mov ah,17h                         ;字符属性,蓝底白字
s:
        mov al,[si]                        ;将字符装入al
        mov es:[di],ax                     ;将蓝底白字字符装入目标地址
        inc si                             ;指向下一个字符
        add di,2                           ;指向下一个显存
        loop s

        mov ah,4ch                         ;返回DOS
        int 21h
code    ends
end     start

#4
nan18882011-06-21 09:38
谢了
1