;实验17,编写包含多个功能子程序的中断例程
;功能: 安装新的int7ch中断例程,实现通过逻辑扇区对软盘的读写
;参数: ah: 0=读,1=写
; dx=要读写的逻辑扇区号
; es:bx指向存储数据的内存区
;逻辑扇区号=(面号*80+磁道号)*18+扇区号-1
;面号=int(逻辑扇区号/1440)
;磁道号=int(rem(逻辑扇区号/1440)/18)
;扇区号=rem(rem(逻辑扇区号/1440)/18)+1
;int13h说明
;ah=功能号,2=读扇区,3=写扇区
;al=读取或写入的扇区数
;ch=磁道号
;cl=扇区号
;d...
- [游客] 老师说了,没有定义堆栈,不能直接用push,pop. 06/15 10:57
- [sbx2000_0] 终于理解了! 11/02 14:08
- [dongxf] haha,谢谢 07/16 11:53
- [tomato] 博主的阶段学习快结束喽!辛苦了! 07/16 09:48
- [dickyq] 一万个支持!~ 07/14 12:36
- [dongxf] 有道理,待改进 07/14 03:30
- [dongxf] 这财富不想要都不行啊 07/14 03:29
- [starrynight] 实现的很好 建议清屏功能添加置光标到第一行功能。 07/12 11:03
- [游客] 年龄大也是一种财富啊!!! 羡慕 07/12 10:16
- [dongxf] 哈,你以为我愿意40啊,谁不想年轻啊 07/12 04:33
[2008-07-15 05:16] 实验17
阅读全文 |
评论次数(2) |
浏览次数(854) |
所属类型(汇编作业)
[2008-07-12 07:42] 实验16修正版,清屏后设置光标位置到第一行第一列
;实验16,编写包含多个功能子程序的中断例程
;安装新的int7ch中断例程,为显示输出提供如下功能子程序
;(1).清屏
;(2).设置前景色
;(3).设置背景色
;(4).向上滚动一行
;入口参数:ah=功能号,0-3,对于功能2,3,al=颜色(0,1,2,3,4,5,6,7)
assume cs:code,ss:stack
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
;拷贝新的int7...
;安装新的int7ch中断例程,为显示输出提供如下功能子程序
;(1).清屏
;(2).设置前景色
;(3).设置背景色
;(4).向上滚动一行
;入口参数:ah=功能号,0-3,对于功能2,3,al=颜色(0,1,2,3,4,5,6,7)
assume cs:code,ss:stack
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
;拷贝新的int7...
阅读全文 |
评论次数(3) |
浏览次数(902) |
所属类型(汇编作业)
[2008-07-11 05:51] 实验15
;实验15,安装新的int9中断例程,按A键再松开后,显示满屏幕的A
;保存新的int9的代码到0:204
;保存原来的int9的入口地址到0:200,设置新的int9的入口地址为0:204
;A的断码=1eh+80h=9eh
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
;拷贝新int9的代码到0:204处
mov ax,cs
mov ds,ax
mov si,o...
;保存新的int9的代码到0:204
;保存原来的int9的入口地址到0:200,设置新的int9的入口地址为0:204
;A的断码=1eh+80h=9eh
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
;拷贝新int9的代码到0:204处
mov ax,cs
mov ds,ax
mov si,o...
阅读全文 |
评论次数(5) |
浏览次数(784) |
所属类型(汇编作业)
[2008-07-11 05:50] 实验14,访问CMOS RAM
;实验14,访问CMOS RAM
;编程,以"年/月/日 时:分:秒"的格式,显示当前日期,时间
;CMOS日期时间存放单元: 秒:0, 分:2, 时:4, 日:7, 月:8, 年:9
assume cs:code
code segment
start:
;year
mov al,9
mov di,0
mov dh,'/'
call show_cmos
;month
mov al,8
mov di,6
mov dh,'/'
call show_cmos
;day
mov al,7
mov di,12
mov dh,' '...
;编程,以"年/月/日 时:分:秒"的格式,显示当前日期,时间
;CMOS日期时间存放单元: 秒:0, 分:2, 时:4, 日:7, 月:8, 年:9
assume cs:code
code segment
start:
;year
mov al,9
mov di,0
mov dh,'/'
call show_cmos
;month
mov al,8
mov di,6
mov dh,'/'
call show_cmos
;day
mov al,7
mov di,12
mov dh,' '...
阅读全文 |
评论次数(2) |
浏览次数(696) |
所属类型(汇编作业)
[2008-07-11 05:50] 实验13(3)
;实验13(3),补全下面的程序,分别在屏幕的2,4,6,8行显示4句英文诗
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset s2,offset s3,offset s4
row: db 2,4,6,8
start:
mov ax,cs
mov ...
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset s2,offset s3,offset s4
row: db 2,4,6,8
start:
mov ax,cs
mov ...
阅读全文 |
评论次数(1) |
浏览次数(561) |
所属类型(汇编作业)
[2008-07-11 05:49] 实验13(2)
;实验13(2),编写并安装int 7ch中断,功能为完成loop指令的功能
;参数: cx=循环次数, bx=位移
;在屏幕中间显示80个 '!'
assume cs:code
code segment
;--- in7 7ch 代码
int7ch_begin:
;进入中断处理程序时,Flags,CS,IP入栈
dec cx
jcxz int7ch_exit
push bp
mov bp,sp
add [bp+2],bx ;修改ip
pop bp
int7ch_exit:
iret ;离开中断处理程序时,Flags,CS,IP出栈
...
;参数: cx=循环次数, bx=位移
;在屏幕中间显示80个 '!'
assume cs:code
code segment
;--- in7 7ch 代码
int7ch_begin:
;进入中断处理程序时,Flags,CS,IP入栈
dec cx
jcxz int7ch_exit
push bp
mov bp,sp
add [bp+2],bx ;修改ip
pop bp
int7ch_exit:
iret ;离开中断处理程序时,Flags,CS,IP出栈
...
阅读全文 |
评论次数(2) |
浏览次数(574) |
所属类型(汇编作业)
[2008-07-08 23:21] 实验13(1)
;实验13(1),编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,安装在0:200处
;参数: dh=rowno,dl=colno,cl=color,ds:si=字符串首地址
assume cs:code
data segment
db "Welcome to masm !",0
data ends
code segment
;--- in7 7ch 代码
int7ch_begin:
mov ax,0b800h
mov es,ax
mov si,0
mov di,0
;用乘法计算显存位移=rowno*160+colno*2...
;参数: dh=rowno,dl=colno,cl=color,ds:si=字符串首地址
assume cs:code
data segment
db "Welcome to masm !",0
data ends
code segment
;--- in7 7ch 代码
int7ch_begin:
mov ax,0b800h
mov es,ax
mov si,0
mov di,0
;用乘法计算显存位移=rowno*160+colno*2...
阅读全文 |
评论次数(2) |
浏览次数(572) |
所属类型(汇编作业)
[2008-07-08 11:55] 检测点13.1(2),用7ch中断例程完成jmp near ptr s 指令的功能
;检测点13.1(2),用7ch中断例程完成jmp near ptr s 指令的功能,用bx传送转移位移
;应用:在屏幕的第12行,显示data段中以0结尾的字符串
assume cs:code
data segment
db 'conversation',0
data ends
code segment
;----------- 7ch中断代码 --------
;进入中断前,Flags,CS,IP入栈
int7ch_begin:
push bp
mov bp,sp
add [bp+2],bx ;修改ip
pop bp
iret ;IP,CS,...
;应用:在屏幕的第12行,显示data段中以0结尾的字符串
assume cs:code
data segment
db 'conversation',0
data ends
code segment
;----------- 7ch中断代码 --------
;进入中断前,Flags,CS,IP入栈
int7ch_begin:
push bp
mov bp,sp
add [bp+2],bx ;修改ip
pop bp
iret ;IP,CS,...
阅读全文 |
评论次数(3) |
浏览次数(649) |
所属类型(汇编作业)
[2008-07-06 22:18] 实验12,加入测试代码
;实验12,编写0号中断处理程序,使得除法溢出发生时,在屏幕中间显示字符串"divide error !"
assume cs:code
code segment
;--------------------------- int0 程序段, 装入0:200h -------------------
int0_begin:
jmp short int0
db "divide error !",0 ;此处的偏移量应该是0:202h,因为上一条语句是两字节
int0:
mov ax,0b800h ;ds指向显存
mov ds,ax ...
assume cs:code
code segment
;--------------------------- int0 程序段, 装入0:200h -------------------
int0_begin:
jmp short int0
db "divide error !",0 ;此处的偏移量应该是0:202h,因为上一条语句是两字节
int0:
mov ax,0b800h ;ds指向显存
mov ds,ax ...
阅读全文 |
评论次数(4) |
浏览次数(610) |
所属类型(汇编作业)
[2008-07-05 22:09] 实验11 编写子程序
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin:
mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov si,0
mov dh,12
mov dl,5
mov cl,2fh
call show_str
mov ax,4c00h
int 21h
;名称: letterc
;功能:...
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin:
mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov si,0
mov dh,12
mov dl,5
mov cl,2fh
call show_str
mov ax,4c00h
int 21h
;名称: letterc
;功能:...
阅读全文 |
评论次数(3) |
浏览次数(797) |
所属类型(汇编作业)
『 查看更多文章 』