在屏幕以不同样式显示“welcome to masm!”这个字符串
程序如下:
- Assembly code
assume cs:code,ds:datadata segment db 'welcome to masm!'data endscode segmentstart:mov ax,data mov ds,ax mov ax,0b800h mov es,ax ;取得80X25显示缓冲区的段地址 mov bp,0 mov si,0 mov cx,16 s3:mov al,[bp] ;得到字符数据 mov ah,2h ;得到样式 mov es:0910h[si],ax ;将其送入相应的显示缓冲区中 mov al,[bp] ;得到字符数据 mov ah,24h ;得到样式 mov es:7d0h[si],ax ;将其送入相应的显示缓冲区中 add si,2 inc bp loop s3code ends end start
为什么“W”就是显示不出来呢?
------解决方案--------------------------------------------------------
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov bx,0
mov di,0
mov ax,0b872h
mov cx,3
s3: push cx
push ax
mov es,ax
mov si,0
mov di,0
mov cx,10h
s1: mov al,ds:[bx+si]
mov es:[bx+di],al
inc si
add di,2
loop s1
mov si,1
pop di
mov al,ds:10h[bx+di]
mov cx,10h
s2: mov es:[bx+si],al
add si,2
loop s2
inc di
pop ax
add ax,0ah
pop cx
loop s3
mov ax,4c00h
int 21h
code ends
end start
------解决方案--------------------------------------------------------
- Assembly code
assume cs:code,ds:data;,ss:ssegdata segmentmy_msg db 'welcome to masm!'data endssseg segment stack db 100h dup(?)sseg endscode segment 'code'start:mov ax,data mov ds,ax mov ax,02h int 10h mov ax,0b800h mov es,ax ;取得80X25显示缓冲区的段地址; mov bp,0 lea bp,my_msg mov si,0 mov cx,16 s3:mov al,ds:[bp] ;得到字符数据 mov ah,2h ;得到样式 mov es:0910h[si],ax ;将其送入相应的显示缓冲区中 mov al,ds:[bp] ;得到字符数据 mov ah,24h ;得到样式 mov es:7d0h[si],ax ;将其送入相应的显示缓冲区中 add si,2 inc bp loop s3 mov ah,0 int 16h mov ah,4ch int 21hcode ends end start