当编译成功的时候,还是觉得挺爽的
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov dx,0b872h ;确定字符显示位置,确定这位置就用了半个小时,只会用笨方法数格格
;得好好学学16进制乘法咋算
;此处是DX不能进行[dx]方式寻址,才与BX换个位置,汗一个&竟然不知道
mov bx,0 ;确定属性数据位置
;属性和外循环次数刚好相等,要是四个属性显示两个,这寄存器该咋搞呢?
mov cx,3 ;外循环三次
s: push cx
mov es,dx ;显示位置。
mov si,0 ;显示字符串位置变量
mov di,0 ;字符串存储位置变量
mov cx,16 ;内循环16次
s1: mov al,ds:[di] ;乾坤大挪移字符串至偶数位
mov es:[si],al
mov ah,ds:[bx+16] ;乾坤大挪移字符串至奇数位
mov es:[si+1],ah
add si,2
inc di
loop s1
inc bx
add dx,0ah
pop cx
loop s
mov ax,4c00h
int 20h
code ends
end start |