zoukankan      html  css  js  c++  java
  • 【8086汇编-Day8】实验九

    Lab1

    • 代码

    ; 在屏幕上输出内存单元中的十进制两位数
    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,[1]    ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
          add dl,30h       ; 补全代码,使得dl中的数值转换为数字字符
          int 21h
    
          mov ah,2
          mov dl,[2]     ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
          add dl,30h        ; 补全代码,使得dl中的数值转换为数字字符      
          int 21h
    
          mov ax,4c00h
          int 21h
    code ends
    end start
    • 结果

    Lab2

    • 代码

    assume cs:code, ds:data,ss:stack
    data segment
         db 12,35,96,55,67
         db 0,0
    data ends
    stack segment
    stack 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,data
          mov ds,ax
          mov bx,0
          mov cx,5
          
        s:mov al,ds:[bx]
          push bx
          mov ah,0
          mov bl,10
          div bl
          mov ds:[5],al
          mov ds:[6],ah
          
          mov ah,2
          mov dl,ds:[5]
          add dl,30h
          int 21h
          
          mov ah,2
          mov dl,ds:[6]
          add dl,30h
          int 21h
          
          mov ah,2
          mov dl,' '
          int 21h
          
          pop bx
          inc bx
          
          loop s
          
          
          mov ax,4c00h
          int 21h
    code ends
    end start
    • 结果

    Lab3

    • 代码

    ; p187 实验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,7
            mov bx,07beH; 添加代码,通过循环逐个将每个字符及其属性送入相应的显示缓冲区对应行
            mov si,0
         s1:mov al,[si]
            mov es:[bx],al; 即:将data段的字符及属性通过循环逐个mov到显示缓冲区(es)段相应的单元内
            inc bx; 可以先尝试分别写三段代码,每次完成一行的显示
            inc si; 程序运行起来后,再尝试通过灵活的寻址方式和循环,对三段代码修改和简化
            mov di,10H
            mov al,[di]
            mov es:[bx],al; 学习第10章子程序后,还可以进一步完善优化,设计子程序,将行号、列号、颜色属性设置成入口参数
            inc bx
            loop s1
            mov al,[si]
            mov es:[bx],al
            inc bx
            inc si
            mov al,0
            mov es:[bx],al
            inc bx
    
            mov cx,2
         s2:mov al,[si]
            mov es:[bx],al
            inc bx
            inc si
            mov di,11H
            mov al,[di]
            mov es:[bx],al
            inc bx
            loop s2
            mov al,[si]
            mov es:[bx],al
            inc bx
            inc si
            mov al,0
            mov es:[bx],al
            inc bx
            
            mov cx,5
         s3:mov al,[si]
            mov es:[bx],al
            inc bx
            inc si
            mov di,12H
            mov al,[di]
            mov es:[bx],al
            inc bx
            loop s3
            
            mov ax,4c00h
            int 21h
    code ends
    end start
    • 结果

  • 相关阅读:
    实战分享 | 你知道这个死锁是怎么产生的吗?
    HDU 3016 线段树区间更新+spfa
    POJ 2828 线段树(想法)
    POJ 2184 01背包+负数处理
    HDU 2955 01背包(思维)
    HDU 1171 背包
    HDU 1561 树形DP入门
    POJ 3694 tarjan 桥+lca
    POJ 2446 最小点覆盖
    POJ 2226 最小点覆盖(经典建图)
  • 原文地址:https://www.cnblogs.com/hackmylife/p/10090913.html
Copyright © 2011-2022 走看看