汇编初学者。。。这个程序有什么问题??
王爽的汇编书上第175页的实验,打印welcome to masm!
但是我写的不知道为什么打印出来的全是黑色的。。。
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
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
[解决办法]
用老机子测试,比较好。