assume cs:code,ds:data data segment db 'welcome to masm!'//定义输出字符串 data ends code segment start: mov ax,data mov ds,ax mov ax,0b800h mov es,ax mov bx,0 mov si,0 mov cx,16 s0:mov al,[bx] mov es:[bx+720h][si],al ;720h=160*11(行)+32(列)*2 屏幕中间为12行33列,前面有11行32列 mov al,2 ;2绿字 mov es:[bx+721h][si],al inc bx inc si loop s0 mov bx,0 mov cx,16 mov si,160 s1: mov al,[bx] mov es:[bx+720h][si],al mov al,36 ;36绿底红字 mov es:[bx+721h][si],al inc bx inc si loop s1 mov bx,0 mov cx,16 mov si,320 s2: mov al,[bx] mov es:[bx+720h][si],al mov al,113 ;113白底蓝字 mov es:[bx+721h][si],al inc bx inc si loop s2 mov ax,4c00h int 21h code ends end start实验分析
时间: 2023-07-02 21:17:13 浏览: 131
计算机组成原理与汇编课件第4章:汇编语言程序格式.pptx
这段代码是用MASM汇编语言编写的,功能是在屏幕上输出三行不同颜色的字符串。其中,data segment定义了要输出的字符串,code segment定义了程序的执行流程。
首先,程序将data segment的起始地址存入AX寄存器,然后通过MOV指令将该地址存入DS寄存器中,以便访问data segment中的数据。
接下来,程序将0B800H存入AX寄存器中,这是VGA显卡的显示缓存区起始地址。将AX寄存器中的值存入ES寄存器中,以便访问显存中的数据。
然后,程序使用循环逐个字符地将data segment中的字符串输出到屏幕上。循环的次数为16,即每行输出16个字符。每次循环,程序使用MOV指令将data segment中的字符读入AL寄存器,然后将AL的值存入显存中的对应位置。其中,ES:[BX+720H][SI]表示显存中第11行32列(720=160*11+32*2)+当前行数所在的偏移量。程序在输出每个字符时,使用不同的颜色标记,以实现不同的颜色效果。
最后,程序使用INT 21H调用DOS系统中的退出功能,退出程序的执行。
总的来说,这段代码实现了在屏幕上输出彩色字符串的功能,展示了汇编语言的基本语法和实现方法。
阅读全文