verycdnet 发表于 2016-12-11 10:28:28

撸了一个实验10_1,大家给点意见,谢谢!

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 21h
       
show_str:
        mov ax,0B800H
        mov es,ax
        mov di,0
        mov al,160
        mul dh
        add ax,3
        mov di,ax

s:
        mov cl,2
        mov ch,ds:
        mov es:,cl
        mov es:,ch
        add di,2
        inc si
        mov cl,0
        jcxz ok
        jmp short s
       
        ok: ret
code ends
end start

qq1242009750 发表于 2016-12-11 11:08:10

      mul dh
      add ax,3
      mov di,ax

                     这里没看懂你想表达什么

verycdnet 发表于 2016-12-11 11:13:01

qq1242009750 发表于 2016-12-11 11:08
mul dh
      add ax,3
      mov di,ax


这个 mov al,160屏幕每一行是160个字节, 然后dh是8,,第8行的第3列,我就 160*8+3!
忘记写注释了!

zealstar 发表于 2016-12-12 07:22:22

verycdnet 发表于 2016-12-11 11:13
这个 mov al,160屏幕每一行是160个字节, 然后dh是8,,第8行的第3列,我就 160*8+3!
忘记写注释了!

就是这里有问题,如果是第8列第3行,应该是160*8+3*2
80*25的屏幕,每个字符占2字节,1个表示ASCII码,1个表示属性码。

verycdnet 发表于 2016-12-12 10:33:11

zealstar 发表于 2016-12-12 07:22
就是这里有问题,如果是第8列第3行,应该是160*8+3*2
80*25的屏幕,每个字符占2字节,1个表示ASCII码,1 ...

对对,谢谢提醒!

zealstar 发表于 2016-12-12 11:38:55

verycdnet 发表于 2016-12-12 10:33
对对,谢谢提醒!

囧的是……{:10_277:}
其实我答错了,第 8 行   第 3 列
才应该是:8*160+3*2

{:10_266:}{:10_266:}{:10_266:}

qq1242009750 发表于 2016-12-13 22:47:16

可以 挺不错的,要注意的是 DOS显示的属性 第一个是ASCALL,第二个是字符颜色的属性
页: [1]
查看完整版本: 撸了一个实验10_1,大家给点意见,谢谢!