无聊的人类LM 发表于 2021-8-19 18:00:45

实验10第一题,

assume cs:code

data segment
      db 'Welcome to masm!',0
data ends

code segment
start: mov dh,8
                mov dl,3
                mov cl,2
                mov ax,data
                mov ds,ax
                mov si,0
                call show_str
               
                mov ax,4c00h
                int 21
               
      show_str: mov ax,0b800h                        ;给出显示内存段地址
                        mov es,ax
                        mov al,0a0h                         ;每行字节数
                        dec dh                              ;行数-1
                        muldh                              ;得出每行首地址
                        mov bx,ax
                        
                        mov al,02h                        
                        mul dl                              
                        sub ax,2                              ;定位列字节首地址=(dl-1)*2
                        add bx,ax                              ;将偏移地址存入bx
                        mov al,cl                              ;存放颜色
                        
                        s:mov ah,                        ;将每个字节依次存放到内存显示的位置
                        mov es:,ah
                        mov es:,al
                        add bx,2                              ;内存显示位置增加2个字节
                        inc si                              ;数据data中字节递增
                        mov cl,0      
                        mov ch,                        ;将data中下一个字节存入ch,
                        jcxz ok                                        ;判断cx是否为0,为0则跳出循环
                         jmp s                                        ;cx不为0,继续执行
                        ok: ret
      
code ends
end start


每次用debug执行完,能得到显示结果,但是debug编译器卡死,求解惑。

无聊的人类LM 发表于 2021-8-19 20:47:29

打扰了,int 21h,忘了加h导致的
页: [1]
查看完整版本: 实验10第一题,