• 实验九


    ---恢复内容开始---

    一、练习一

    补全程序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

    实验截图:

    二、练习二

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

    实验代码如下:

    ;补全程序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
    
          mov si,0
          mov cx,5
          
    s:    mov ah,0
          mov al,ds:[si]
          mov bl,10
          div bl
          mov ds:[7],al
          mov ds:[8],ah
         
          mov ah,2
          mov dl,ds:[7] 
          add dl,30h 
          int 21h
    
          mov ah,2
          mov dl,ds:[8]
          add dl,30h  
          int 21h
    
          mov ah,2
          mov dl,' '
          int 21h
    
          inc si
    
          loop s
          mov ax,4c00h
          int 21h
    code ends
    end start

    实验结果截图:

    三、练习三

    教材实验9(P187)

    编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'。

    实验代码如下:

    assume ds:data, cs:code
    data segment
           db 'welcome to masm!'  
           db 2H,24H,71H  
    data ends
    
    stack segment
        dw 8 dup (0)
    stack ends
    
    code segment
    start:  mov ax,data
            mov ds,ax 
    
            mov ax, stack  
            mov ss, ax      
            mov sp, 16
            
            mov cx, 3      
            mov si, 32
            mov bx, 16
    
            mov ax, 0b800h
            mov es, ax
    
    s0:    push cx
            mov cx,16
            mov bp,[si]
            mov di,0
    
    s1:    mov al, [di]   
            mov ah, [bx]    
            mov es:[bp], ax
    
            add bp,2  
            inc di       
            loop s1
    
            pop cx
            add bx, 1     
            add si, 2     
            loop s0
            
            mov ax,4c00h
            int 21h
    code ends
    end start

    实验截图:

    不知道为什么没有成功....希望大家可以帮我看看问题出在哪里...

    思考与总结:

    练习一中我发现存放除法运算结果的商和余数的两个字节单元可以在段内任意选取,且不必是连续的。如

    mov  ds:[1],al    ; 补全代码,让商保存到data段注释中指定的单元
    mov  ds:[17],ah    ; 补全代码,让余数保存到data段注释中指定的单元

    也可得出正确结果12。

    这次实验的内容比较丰富,特别是练习三让我懂得了光的三原色是如果决定电脑屏幕所显示的颜色,十分有趣。

  • 相关阅读:
    1、怎么通过postman创建mock服务?
    13、使用正则表达式完成添加投资项目接口
    12、登录接口实战
    11、简历编写
    下载HTMLTestRunner 地址
    selenium (二)
    python 自动化测试
    Linux 安装MySQL流程
    文件 open 方法
    面向对象知识总结
  • 原文地址:https://www.cnblogs.com/wlxnw/p/10093440.html
Copyright © 2020-2023  润新知