实验九

本文通过三个实例详细介绍了使用MASM进行编程的过程,包括在屏幕上输出内存单元中的十进制数、输出data段定义的多个十进制数以及在屏幕中间显示不同颜色和背景的字符串。这些实践加深了对div指令的理解,提高了循环和双重循环的运用技巧。

1.补全程序1.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 cx,5
      mov bx,0
s:    mov ax,0
      mov dl,10
      mov al,[bx]
      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,20h
      int 21h
      
      mov ah,2
      mov dl,20H
      int 21H 
      inc bx
      loop s
 
      mov ax,4c00h
      int 21h
code ends
end start

输出结果为

3.根据材料编程在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'

; 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 si,06E0H      ;es的偏移地址
        mov bx,0             ;属性值的偏移地址
        mov cx,3

s:     mov dh,cl
        mov cx,16
        mov di,0
s1:      mov al,ds:[di]
        mov es:[si],al
        inc si
        mov al,ds:[bx+16]
        mov es:[si],al 
        inc di
        inc si
        loop s1

        inc bx
        mov cl,dh
        add si,0080H
        loop s

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

实验结果

实验结论:

实验一二更加了解div的使用

更加熟练运用循环,双重循环压栈保护cx理解更深刻。

转载于:https://www.cnblogs.com/pupulalap/p/10090995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值