首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

汇编菜鸟。这个程序有什么有关问题?

2012-02-06 
汇编初学者。。。这个程序有什么问题??王爽的汇编书上第175页的实验,打印welcome to masm!但是我写的不知道为

汇编初学者。。。这个程序有什么问题??
王爽的汇编书上第175页的实验,打印welcome to masm!

但是我写的不知道为什么打印出来的全是黑色的。。。

Assembly code
assume cs:code, ds:datadata segment    db 01000110b    db 'Welcome to masm!'data endsstack segment    db 0,0,0,0,0,0,0,0,0,0stack endscode segmentstart:    mov ax, stack        mov ss, ax        mov sp, 10        mov ax, data        mov ds, ax        mov cx, 16        mov bx, 1        mov ax, 0b800h        mov es, ax ;es指向显示区        mov dx, 0    s1:    mov ah, [0]    ;获得文字属性        mov al, [bx]    ;获得文字        push bx ;保存下bx        mov bx, dx ;然后把dx放到bx里面        mov es:[bx], ax    ;用bx当偏移,显示文字        pop bx    ;回复bx        inc bx    ;bx+1,指向下个字符        add dx, 2    ;dx+2,指向下个显示字符的显示区内存    loop s1        mov ax, 4c00h        int 21hcode endsend start


[解决办法]
Assembly code
assume cs:code,ds:datadata segment db 'welcome to masm!' data endscode segmentstart:mov ax,0b800h      mov es,ax      mov ax,data      mov ds,ax      mov si,0      mov di,0      mov cx,10h    s:mov al,[si]      mov ah,02h                mov es:[720h+di],ax              mov al,[si]       mov ah,24h       mov es:[7c0h+di],ax       mov al,[si]       mov ah,71h       mov es:[860h+di],ax      inc si      add di,2      loop s      mov ax,4c00h      int 21h      code endsend start
[解决办法]
用DOS功能调用不是很好嘛

[解决办法]
都什么年代了,操作系统马上都要上64位了,还玩16位汇编,硬件平台不同当然玩不转啦
[解决办法]
用DOS功能调用不是很好,好象没有改变字色的功能,BIOS中断可以一用.


[解决办法]
;
assume cs:code, ds:code
code segment
start:
push cs
pop ds
cld
mov ax,3
int 10h
mov ax, 0b800h
mov es, ax ;es指向显示区
mov di,(5*80+8)*2
mov ah,color
mov si,offset string
next:
lodsb
test al,al
jz exit
stosw
jmp next
exit:
mov ah,1
int 21h
mov ax, 4c00h
int 21h

 string db 'Welcome to masm!',0 ;加个标志
 color db 01000110b
code ends
end start

[解决办法]
用老机子测试,比较好。

热点排行