首页
社区
课程
招聘
汇编语言高下请进来一下!~~~帮小弟一个小忙
发表于: 2010-1-21 20:24 2362

汇编语言高下请进来一下!~~~帮小弟一个小忙

2010-1-21 20:24
2362
1.显示子程序

完整程序如下:

data segment

        db 'Welcome to masm!',0

data ends

code segment

        assume cs:code,ds:data

start:

        mov dh,1              ;dh装行号(范围:1--25)

        mov dl,1              ;dl装列号(范围:1--80)[注:每超过80等于行号自动加1]

        mov cl,0cah           ;cl中存放颜色属性(0cah为红底高亮闪烁绿色属性)

        mov ax,data

        mov ds,ax

        mov si,0

        call show_str

        

        mov ax,4c00h

        int 21h

        

show_str:   ;显示字符串的子程序[定义开始]

    1    push cx

    2   push si

    3    mov al,0A0h

    4    dec dh          ;行号在显存中下标从0开始,所以减1

    5   mul dh

    6     mov bx,ax

    7    mov al,2

    8   mul dl

    9    sub ax,2       ;列号在显存中下标从0开始,又因为偶字节存放字符,所以减2

    10    add bx,ax      ;此时bx中存放的是行与列号的偏移地址

   11  mov ax,0B800h

    12    mov es,ax      ;es中存放的是显存的第0页(共0--7页)的起始的段地址

   13  mov di,0

     14   mov al,cl

     15   mov ch,0

s:      mov cl,ds:[si]

        jcxz ok

        mov es:[bx+di],cl       ;偶地址存放字符

        mov es:[bx+di+1],al     ;奇地址存放字符的颜色属性

        inc si

        add di,2

        jmp short s

ok:     pop si

        pop cx

        ret    ;显示字符串的子程序[定义结束]

请问5 6 7 8是用来干什么的呢?  还有第9句的-2 AL本来是2再减2不就是零了吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//