实验九

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

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);

 实验结果:

 

posted on   正版小桐人  阅读(142)  评论(0编辑  收藏  举报

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示