爱问知识人 爱问教育 医院库

汇编语言实验9跪求详细解答

首页

汇编语言实验9跪求详细解答

汇编语言实验9跪求详细解答。我在网络上看到答案,但就是看不懂!谢谢

提交回答

全部答案

    2018-06-02 05:21:27
  •   ; ============================================================================================
    ;
    ; 王爽汇编实验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全屏模式下才能看到!!!。
      

    j***

    2018-06-02 05:21:27

类似问题

换一换

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):