汇编语言实验9跪求详细解答
汇编语言实验9跪求详细解答。我在网络上看到答案,但就是看不懂!谢谢
; ============================================================================================
;
; 王爽汇编实验9 根据材料编程
; 要求:编程实现在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 'welcome to masm!' 。
; 在80*25彩色字符模式下,显示器可显示25行,每行80个字符,每个字符可以有256种属性
; 02H表示黑底绿色
; 00100100B表示绿底红色
; 01110001B表示白底蓝色
;
; ============================================================================================
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'welcome to masm!',0
datasg ends
stacksg segment
stacksg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,0b800h
mov es,ax ; es初始化为视频缓冲区段地址
; 第一步,计算出屏幕中间的位置
; 书上给出的资料为:一个屏幕共显示25行,每行80个字符(160字节)
; 偶数字节放字符,奇数字节放字符属性
; 待显示的字符串长度为16个字节,算作16个字符
mov ax,12 ; 第13行
mov bx,160
mul bl ; 计算出前12行共多少字节,结果在ax中
add ax,64 ; 之所以加上64个字节是因为(160-16*2)/ 2=64 字节
; 这样才能保证字符串正好居中
mov di,ax ; 将结果放到目的地址寄存器中,配合es指向视频缓冲区中的目的位置
mov si,0 ; 初始化源地址寄存器,指向数据段中的源字符串
call ShowString ; 调用显示字符串的子程序
mov ax,4c00h
int 21h
ShowString:
mov cx,7
; 显示绿色的welcome
loop1:
mov al,[si]
mov es:[di],al
mov byte ptr es:[di 1],02h
inc si
inc di
inc di
loop loop1
; 显示welcome后的空格
mov al,[si]
mov es:[di],al
inc si
inc di
inc di
mov cx,2
; 显示绿底红色的to
loop2:
mov al,[si]
mov es:[di],al
mov byte ptr es:[di],00100100B
inc si
inc di
inc di
loop loop2
; 显示to后的空格
mov al,[si]
mov es:[di],al
inc si
inc di
inc di
mov cx,4
; 显示白底蓝色的masm
loop3:
mov al,[si]
mov es:[di],al
mov byte ptr es:[di 1],01110001B
inc si
inc di
inc di
loop loop3
; 显示最后的!
mov al,[si]
mov es:[di],al
ret
codesg ends
end start
; 结果还是在cmd全屏模式下才能看到!!!。
答:汇编语言是计算机系统提供给用户的最快、最有效的语言,也是能对硬件直接编程的语言。语句直接对寄存器等进行指令操作。因此,汇编语言编的程序和硬件有关. 也有人称之为...详情>>
答:详情>>
答:作为一种降低复杂性的工具,面向对象语言产生了,面向对象程序设计也随之产生详情>>
答:最好先学C,接着学别的就轻松了,写游戏的语言比较多,后来再说都不耽误详情>>