icely 发表于 2014-9-28 15:42:09

实验9

assume cs:codesg, ds:datasg, ss:stacksg

datasg segment
       db'welcome to masm!';si索引,di定位
           db 02h,24h,71h;bx索引
datasg ends

stacksg segment
       dw 8 dup(0);存放16位寄存器的值,所以定义为dw
stacksg ends

codesg segment

start: mov ax, datasg
       mov ds, ax
       mov ax, stacksg
       mov ss, ax       
       mov sp,10h;指向栈顶指针
          
           mov ax, 0b872h   ;要往ax处写入数据
       mov bx, 0 ;存放属性       
          
           mov cx, 3          
s:   push cx   ;最外层循环
       push bx;属性偏移位置
       
           mov es, ax   ;往es处写内容
       mov si, 0
           mov di, 0

       mov cx, 16;放入字母ASCII码
s1:    mov ah,     ;一个字节8位
       mov es:, ah
       inc si
           add di, 2
           loop s1

           mov di, 1
           pop bx;取出属性
           mov ah, 10h;属性8位
           inc bx;属性指向下一位置
          
           mov cx, 16;放入属性          
s2:    mov es:, ah
       add di, 2
           loop s2

           mov ax, es
           add ax, 160;下一行
          
       pop cx
       loop s
          
           mov ax,4c00H
           int 21H
          
codesg ends
end start

haiouda 发表于 2014-9-28 21:36:23

没有看你的程序,但依我的经验来看,显示位置循的问题(最后面的把前的都覆盖了)

大个的糖果 发表于 2014-10-31 23:34:31

页: [1]
查看完整版本: 实验9