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

    一、实验内容

    以下代码均使用了公共邮箱里的实验9程序框架,并且删改了部分注释


    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 
         mov bx,0 
          mov cx,5 
          s:mov ah,0
          mov al,[bx]
          mov dl,10     
          div dl     ;进行除法运算
          mov dh,ah  ;将余数放入指定单元
          mov dl,al  ;将商放入指定单元
          mov ah,2   
          add dl,30h  ;将dl中数值转换成数字字符
          int 21h
          
          mov dl,dh
          mov ah,2
          add dl,30h
          int 21h
          
          mov dl,20h
          mov ah,2
          int 21h
          
          inc bx
          loop s
          
          
          mov ax,4c00h
          int 21h
    code ends
    end start

    3. 教材实验9(P187)

    assume cs:code
    
    data segment
    
         db 'welcome to masm!'
    
    data ends
    
    code segment
    
    start:   mov ax,data
    
         mov ds,ax
    
         mov ax,0b800h
    
         mov es,ax
    
         mov bx,0720h                ;设置中间行中间列的首地址   
    
         mov si,0
    
         mov cx,16
    
    s:   mov ax,[si]
    
         mov ah,2h
    
         mov es:[bx],ax              ;设置绿色字体
    
         mov ah,24h
    
         mov es:[bx].0a0h,ax         ;设置绿底红色
    
         mov ah,71h
    
         mov es:[bx].0a0h.0a0h,ax    ;设置白底蓝色
    
         inc si                      ;指向下一字符
    
         add bx,2                    ;指向下一显存单元
    
         loop s
    
         mov ax,4c00h
    
         int 21h
    
    code ends
    
    end start

     二、实验总结

    学习了指令div和mul用法和汇编指令中操作数的类型,理解指令中操作数长度如何确定,不过对寻址方式还是不够理解,所以好像还没“掌握其在编程中的灵活应用“。

    通过第三题还知道了中显示字符串所对应的显存空间偏移地址:

  • 相关阅读:
    java-判断某一年是否是闰年
    java-不用其他变量实现两变量互换
    java基础一标识符,运算符
    robotium学习(三)
    robotium学习(二)
    robotium学习(一)
    AX2012 订单折扣的应用
    AX2012 用户收藏夹复制
    ueditor 改变图片上传路径
    if else 多路分支,多条件运算
  • 原文地址:https://www.cnblogs.com/kori/p/10089620.html
Copyright © 2011-2022 走看看