当前位置: 代码迷 >> 汇编语言 >> 王爽汇编实验九疑问
  详细解决方案

王爽汇编实验九疑问

热度:1535   发布时间:2013-02-26 00:00:00.0
王爽汇编实验9疑问
在屏幕以不同样式显示“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
  相关解决方案