• 实验九


    实验一:在屏幕上输出内存单元中的十进制两位数

    assume cs:code, ds:data
    data segment
    db 12
    db ?,? ; 前一个字节用于保存商,后一个字节用于保存余数
    data ends
    code segment
    start:
    ××××
    ×××× ; 补全指令,使得ds <-- data段地址

    mov ah,0
    mov al,ds:[0] ; ax <-- data段字节单元的被除数12
    mov bl,10
    div bl
    mov ××,al ; 补全代码,让商保存到data段注释中指定的单元
    mov ××,ah ; 补全代码,让余数保存到data段注释中指定的单元

    mov ah,2
    mov dl,×× ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
    ×××× ; 补全代码,使得dl中的数值转换为数字字符
    int 21h

    mov ah,2
    mov dl,×× ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
    ×××× ; 补全代码,使得dl中的数值转换为数字字符
    int 21h

    mov ax,4c00h
    int 21h
    code ends
    end start

     实验代码如下:

    由实验微视频可知:如果除数为8位,则AL储存除法操作的商,AH储存除法操作的余数;如果除数为16位,则AX储存除法操作的商,DX储存除法操作的余数

    因为data不能直接调用,所以间接放在ax中; int 21h的2号子功能,完成单个字符输出的方法,2号中断表示在显示器屏幕上显示;

    实验结果:

     实验二:

    assume cs:code, ds:data
    data segment
    db 12,35,96,55,67
    data ends
    code segment
    start:
    ; 补全程序,参考t1.asm,综合应用以下知识完成:
    ; (1) loop指令、内存单元地址的灵活表示
    ; (2) div指令, 数字→数字字符的转换
    ; (3) int 21h的2号子功能,完成单个字符输出的方法,即:
    ; mov ah,2
    ; mov dl,待输出字符或其ASCⅡ码
    ; int 21h
    ; (4) 数据和数据之间以空格间隔的实现: 使用(3)输出空格字符

    mov ax,4c00h
    int 21h
    code ends
    end start

    实验代码如下:

     实验二和实验一相类似,实验一是单个数据输出,实验二则是多组,所以是要用loop指令,且多加一组空格控制间距。

    实验三:在屏幕中间分别显示绿色,绿底红色,白色蓝底的字符串’welcome to masm!’

    实验代码如下:

    重点: 三次循环,控制颜色的二进制(00000010b,00100100b,01110001b);

     实验结果:

  • 相关阅读:
    带最小值操作的栈 &#183; Min Stack
    删除排序数组中的重复数字 II · Remove Duplicates from Sorted Array II
    K组翻转链表 · Reverse Nodes in k-Group
    HTML DOM Style borderBottomLeftRadius 属性
    PHP For 循环
    PHP copy() 函数
    CSS border-left-color 属性
    ASP.NET Web Pages 文件夹
    no-empty-label (Rules) – Eslint 中文开发手册
    PHP ksort() 函数
  • 原文地址:https://www.cnblogs.com/smallblog/p/10115994.html
Copyright © 2020-2023  润新知