王爽汇编语言 实验十三

;***********************************************
;实验一:编写并安装 int 7ch 中断例程
;功能为显示一个用 0 结束的字符串
;中断例程安装在0:200 处
;参数:(dh) = 行号,(dl) = 列号,(cl) = 颜色,
;ds:si 指向字符串首地址
;***********************************************
assume cs:code
data segment
db “Welcome to masn!”, 0
data ends

code segment
start:
mov ax, cs
mov ds, ax
mov si, offset do7c ;ds:si指向源地址
mov ax, 0
mov es, ax
mov di, 200h ;es:di指向目标地址

mov cx, offset do7cend - offset do7c
cld
rep movsb                   ;安装中断历程完毕

mov dh, 24
mov es, ax
mov word ptr es:[7ch*4], 200
mov word ptr es:[7ch*4+2], 0  ;设定中断向量

mov dh, 24                  ;31-39为测试程序
mov dl, 63
mov cl, 4
mov ax, data
mov ds, ax
mov si, 0
int 7ch
mov ax, 4c00h
int 21h

do7c: ;中断例程代码
mov ax, 0b800h
mov es, ax
mov al, 160
mul dh
mov di, ax
mov al, 2
mul dl
add di, ax
mov al, cl
begin:
mov cl, [si]
jcxz ok
mov es:[di], cl
inc di
mov es:[di], cl
inc si
inc di
jmp short begin
ok:
iret
do7cend:
nop

code ends
end start

;*************************************************
;实验二:编写并安装 7ch 中断例程,功能为完成 loop 指令的功能
;参数: (CX) = 循环次数, (BX) = 位移
;*************************************************
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do7c
mov ax,0
mov es,ax
mov di,200h

mov cx,offset do7ce - offset do7c  
cld  
rep movsb  

mov ax,0  
mov es,ax  
mov word ptr es:[7ch*4],200h  
mov word ptr es:[7ch*4+2],0  

mov ax,0b800h  
mov es,ax  
mov di,160*12  
mov bx,offset s - offset se  
mov cx,80  

s:
mov byte ptr es:[di],’!’
add di,2
int 7ch
se:
nop
mov ax,4c00h
int 21h
do7c:
push bp
mov bp,sp
dec cx
jcxz ok
add [bp+2],bx
ok:
pop bp
iret
do7ce:
nop
code ends
end start

实验3就不写了,就是调用BIOS,或者DOS的中断历程的子程序

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值