sannnnnd 发表于 2018-8-25 11:37:42

实验9(一次性显示三行)

DATAS SEGMENT
    db 'welcome to masm'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
   
    mov ax,0B800H
    mov es,ax
    mov bx,0
    mov cx,15
    ;从第12行:0AA0开始
    ;从第33列:42H开始
    ;0AE2H开始
    mov si,0AE2H
s:mov al,
       
        push cx
        push si
       
        mov cx,3
s0:mov es:,al
        add si,0A0H
        loop s0
       
        pop si
        pop cx
        inc si
       
        push si
        mov al,00000010B
        mov es:,al
       
        add si,0A0H
        mov al,00100100B
        mov es:,al
       
        add si,0A0H
        mov al,01110001B
        mov es:,al
       
        pop si
        inc bx
        inc si
        loop s

   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

sannnnnd 发表于 2018-8-25 11:40:29

唔 发现自己写完 没有写栈段就直接push了。。。
大失误大失误!!!!

sannnnnd 发表于 2018-8-25 11:42:33

修改后的代码如下:



DATAS SEGMENT
    db 'welcome to masm'
DATAS ENDS

STACKS SEGMENT
    dw 8 dup (0)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov ax,STACKS
    mov ss,ax
    mov sp,16
   
    mov ax,0B800H
    mov es,ax
    mov bx,0
    mov cx,15
    ;从第12行:0AA0开始
    ;从第33列:42H开始
    ;0AE2H开始
    mov si,0AE2H
s:mov al,
       
        push cx
        push si
       
        mov cx,3
s0:mov es:,al
        add si,0A0H
        loop s0
       
        pop si
        pop cx
        inc si
       
        push si
        mov al,00000010B
        mov es:,al
       
        add si,0A0H
        mov al,00100100B
        mov es:,al
       
        add si,0A0H
        mov al,01110001B
        mov es:,al
       
        pop si
        inc bx
        inc si
        loop s

   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START




页: [1]
查看完整版本: 实验9(一次性显示三行)