zoukankan      html  css  js  c++  java
  • 实验九

    一.实验内容

    1. 补全程序t1.asm,完成在屏幕上输出内存单元中的十进制两位数 。

    源代码:

    ; 在屏幕上输出内存单元中的十进制两位数
    assume cs:code, ds:data
    data segment
         db 12
         db 0,0   ; 前一个字节用于保存商,后一个字节用于保存余数
    data ends
    code segment
    start:
          mov ax,data
          mov ds,ax       ; 补全指令,使得ds <-- data段地址
          
          mov ah,0
          mov al,ds:[0]   ; ax <-- data段字节单元的被除数12
          mov bl,10
          div bl
          mov ds:[1],al    ; 补全代码,让商保存到data段注释中指定的单元
          mov ds:[2],ah    ; 补全代码,让余数保存到data段注释中指定的单元
    
          mov ah,2
          mov dl,ds:[1]    ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
          add dl,30h       ; 补全代码,使得dl中的数值转换为数字字符
          int 21h
    
          mov ah,2
          mov dl,ds:[2]     ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
          add dl,30h    ; 补全代码,使得dl中的数值转换为数字字符      
          int 21h
    
          mov ax,4c00h
          int 21h
    code ends
    end start

    实验结果:

    2. 补全程序t2.asm,完成在屏幕上输出data段定义的5个十进制两位数,数据和数据 之间以空格间隔。

    assume cs:code, ds:data
    data segment
         db 12,35,96,55,67
    data ends
    code segment
    start:
          mov ax,data
          mov ds,ax       ; 补全指令,使得ds <-- data段地址
          mov bx,0
          mov cx,5
          
          s:mov ah,0
          mov al,ds:[bx]   ; ax <-- data段字节单元的被除数12
          mov dl,10
          div dl
          
          mov dl,al
          mov dh,ah
    
          mov ah,2         
          add dl,30h       
          int 21h
    
          mov ah,2
          mov dl,dh     
          add dl,30h        
          int 21h
          
          mov ah,2
          mov dl,0
          int 21h
          
          inc bx
          loop s
          
          mov ax,4c00h
          int 21h
    code ends
    end start

    实验结果:

    3.教材实验9

    代码:

    assume ds:data, cs:code
    data segment
           db 'welcome to masm!'  
           db 2H,24H,71H          ;字符串属性值
    data ends
    
    code segment
    start:  mov ax,data
            mov ds,ax            ;字符串及属性值所在段的段地址送入ds
            
            mov ax,0b800H
            mov es,ax            ;80×25彩色字符模式显示缓冲区段地址送入es
            
            mov cx,3
            mov bx,0
            mov si,0
            mov di,16
            
         s1:push cx
             mov cx,16
             
         s2:mov al,ds:[bx]
             mov ah,ds:[di]
             inc bx
             
             mov es:[si],al
             inc si
             mov es:[si],ah
             inc si
             loop s2
             
             pop cx
             mov bx,0
             inc di
             add si,0080h
             loop s1
             
            mov ax,4c00h
            int 21h
    code ends
    end start

    实验结果:

    二.实验总结

    这次实验主要是研究怎么在屏幕上输出内容。第一个任务比较简单,而且老师给的代码中注释的提示很详细,所以并不是很难。

    第二个任务与第一个任务有些相似,所以在第一个代码上稍作修改就能完成。

    主要是第三个任务,涉及到是否闪烁、背景色,高亮、还有前景色等等。代码中使用了两次循环,所以一开始我不知道要怎么处理cx的值才能顺利进行,但是发现利用栈,将原cx的值压入栈作为暂存就可以解决这一问题。所以在第三个实验中,我收获颇丰。

  • 相关阅读:
    Dedecms自定义表单后台列表展现方式更改
    FileZilla出现Failed to convert command to 8 bit charset
    织梦中data文件夹是存放什么内容的
    Dedecms去掉URL中a目录的方法
    FileZilla出现Failed to convert command to 8 bit charset
    Linux虚拟主机通过FTP软件创建目录时提示550 Create Directory Operation Failed
    CSharp设计模式读书笔记(1):简单工厂模式(学习难度:★★☆☆☆,使用频率:★★★☆☆)
    Ubuntu 10.04 Desktop 快速添加微软雅黑字体
    firefox10的界面 确实领先
    ubuntu下断点续传工具 aria2
  • 原文地址:https://www.cnblogs.com/xcss831/p/10098448.html
Copyright © 2011-2022 走看看