功能:安装一个新的int 7ch中断全程,实现通过逻辑扇区号对软盘进行读写。
参数说明:1.ah寄存器传递功能号:0表示读,1表示写
2.bx寄存器传递要读写的扇区的逻辑扇区号
3.es:bx指向存储读出数据或写入数据的内存区
备注:此程序增加了读出功能并显示,以测试写入内容是否正确。
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset sqr
mov ax,0
mov e...


- [peterhui] 感觉仅学到了点皮毛而已,虽然这本书要学完了,但这才刚刚起步。打算将全书重新温习一遍后开始学C。革命才 08/15 10:02
- [younggay] 马上就学完了。有啥感想不?呵呵 08/09 15:55
- [tomato] 不错! 08/08 14:19
- [lwbfq] 博主只是实现了输入的功能,而书上的要求却是要把这个功能作为一个功能调用加以实现,可以指定输入字符显示 08/07 16:14
- [peterhui] 大侠们!发表点意见啊! 08/07 10:06
- [duckgaga] 不要急,呵呵,尤其是第16章,往深了去很有内涵的.我当时就花了2个星期的时间去学(虽然并不是连续的, 07/14 16:53
- [peterhui] 呵!说错了,应该是奥运会前学完这本书。好多网友都是一星期两章,我只能一个月两章了,边工作边抽空学习, 07/14 14:26
- [游客] 奥运会? 博主很忙啊 加油 07/14 11:55
- [游客] 很好。这样的学习方式挺不错。 顶!!! 07/14 11:49
- [peterhui] 多谢tomato的指点,谢谢! 程序下次再改,我得加紧学完16章了,计划奥运会前学完,担心有问题: 07/13 08:42
[2008-08-08 12:06] 实验17 编写含多个功能子程序的中断例程
阅读全文 |
评论次数(3) |
浏览次数(825) |
所属类型(汇编作业)
[2008-08-05 16:33] 17.3 字符串的输入,是不是作者写得太复杂了,还是我没掌握要领?请各位指导
17.3 字符串的输入,是不是作者写得太复杂了,还是我没掌握要领?以下是我写的相同功能程序,请各位指导,谢谢!
assume cs:code
code segment
start:
mov si,0
s: mov ah,0
int 16h
cmp ah,1ch
je over
cmp ah,0eh
je backspace
mov bx,0b8c0h
mov es,bx
mov es:[si],al
i...
assume cs:code
code segment
start:
mov si,0
s: mov ah,0
int 16h
cmp ah,1ch
je over
cmp ah,0eh
je backspace
mov bx,0b8c0h
mov es,bx
mov es:[si],al
i...
阅读全文 |
评论次数(2) |
浏览次数(939) |
所属类型(汇编作业)
[2008-07-13 23:42] 16.3节显示pi圆周率小数点后位数的程序
16.3节以计算sin(x)值查表编程例子延伸到一个显示pi圆周率小数点后位数的程序,本程序不完全符合题意要求,假设只能显示小数点后10位,大于10位则显示输入错误。编写此程序本意只是掌握此种查表编程方法而已。各位多多指点
描述如下:
功能:利用表,在两个数据集合之间建立映射关系,可以查表方法得到其对应数据。
参数:es:si指向显存地址 ,用al向子程序传递小数点后位数
assume cs:code
code segment
start:jmp short show
table dw dec0,dec1,dec2,dec3,dec4,dec...
描述如下:
功能:利用表,在两个数据集合之间建立映射关系,可以查表方法得到其对应数据。
参数:es:si指向显存地址 ,用al向子程序传递小数点后位数
assume cs:code
code segment
start:jmp short show
table dw dec0,dec1,dec2,dec3,dec4,dec...
阅读全文 |
评论次数(1) |
浏览次数(846) |
所属类型(汇编作业)
[2008-07-07 15:49]
有趣的一道题:将一组零乱数组,重新按序排列。(可能还有更好算法,请大家提出)
有趣的一道题:将一组零乱数组,重新按序排列
描述如下:
功能:要求将一组零乱数组,重新按序排列并放回原位。
编程思路:将第一个数据与第二个数据比较,大于则调换位置,小于则不动,然后将调换后的第二个数据与第三个数据比较,大于则调换,小于则不动,依此类推直到最后一个数为一轮循环,经过9轮循环则可排
序完成跳出。,
assume cs:code, ds:data
data segment
a dw 3,2,5,1,6,4,8,10,9,7 ;包含10个元素的零乱数组
data ends
code segment
start:mov cx,9 ...
描述如下:
功能:要求将一组零乱数组,重新按序排列并放回原位。
编程思路:将第一个数据与第二个数据比较,大于则调换位置,小于则不动,然后将调换后的第二个数据与第三个数据比较,大于则调换,小于则不动,依此类推直到最后一个数为一轮循环,经过9轮循环则可排
序完成跳出。,
assume cs:code, ds:data
data segment
a dw 3,2,5,1,6,4,8,10,9,7 ;包含10个元素的零乱数组
data ends
code segment
start:mov cx,9 ...
阅读全文 |
评论次数(3) |
浏览次数(1376) |
所属类型(默认类型)
[2008-07-06 17:26]
在实验14的基础上改进,将实时时间以跑码灯形式显示
实验14:访问CMOS RAM
描述如下:
功能:将以“年/月/日 时:分:秒”的格式,显示当前的日期,时间,并以跑码灯形式显示。
参数:es:si指向显存地址 ;ds:di指向数据段日期时间端口
编程思路:(此程序比原书上要求有稍作修改:可以实时扫描端口将时间不断更新)
因CMOS RAM年份及日期共6个单元,将此六个单元放入数据段,循环一次端口di+1,直到循环完.
assume cs:code
data segment
db 9,8,7,4,2,0
db '/','/',' ',':',':...
描述如下:
功能:将以“年/月/日 时:分:秒”的格式,显示当前的日期,时间,并以跑码灯形式显示。
参数:es:si指向显存地址 ;ds:di指向数据段日期时间端口
编程思路:(此程序比原书上要求有稍作修改:可以实时扫描端口将时间不断更新)
因CMOS RAM年份及日期共6个单元,将此六个单元放入数据段,循环一次端口di+1,直到循环完.
assume cs:code
data segment
db 9,8,7,4,2,0
db '/','/',' ',':',':...
阅读全文 |
评论次数(2) |
浏览次数(1136) |
所属类型(默认类型)
[2008-07-06 14:14] 实验15汇编作业
第十五章例题:安装新的int9中断例程,使得原int9中断全程功能 得到扩展。
功能:在DOS下,按下'a'键后,除非不再松开,如果松开,就显示满屏幕的'a',其它键照常处理。
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds ;设置新中断例程段地址
mov ax,0...
功能:在DOS下,按下'a'键后,除非不再松开,如果松开,就显示满屏幕的'a',其它键照常处理。
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,128
push cs
pop ds ;设置新中断例程段地址
mov ax,0...
阅读全文 |
评论次数(1) |
浏览次数(647) |
所属类型(汇编作业)
[2008-07-03 15:00] 第十四章 实验14汇编作业,请大家指点
实验14:访问CMOS RAM
描述如下:
功能:将以“年/月/日 时:分:秒”的格式,显示当前的日期,时间。
参数:es:si指向显存地址
编程思路:(此程序比原书上要求有稍作修改:可以实时扫描端口将时间不断更新)
因CM0S RAM中的时间前三个时间存放单元间隔2,后三个日期存放单元间隔1,所以我将其分为两部分偱环同时调用一个子程序
assume cs:code
code segment
start:mov cx,3
push cx ;供时间偱环三次
...
描述如下:
功能:将以“年/月/日 时:分:秒”的格式,显示当前的日期,时间。
参数:es:si指向显存地址
编程思路:(此程序比原书上要求有稍作修改:可以实时扫描端口将时间不断更新)
因CM0S RAM中的时间前三个时间存放单元间隔2,后三个日期存放单元间隔1,所以我将其分为两部分偱环同时调用一个子程序
assume cs:code
code segment
start:mov cx,3
push cx ;供时间偱环三次
...
阅读全文 |
评论次数(7) |
浏览次数(930) |
所属类型(汇编作业)
[2008-06-20 20:48] 内中断的一个问题,请帮忙释疑
书中说:“当CPU内部有下面四种情况发生时,将产生相应的中断信息“:
1. 除法错误
2. 单步执行
3. 执行INT0指令
4. 执行INT指令
我的问题是,如果我有一个新的中断信息 "5.执行...指令"需要产生新的中断信息。我将中断程序的入口地址写在0:0010处,那CPU就知道会提取5号中断类型码吗?我的意思是CPU是怎么知道在什么情况下提取相应的中断类型码的...
1. 除法错误
2. 单步执行
3. 执行INT0指令
4. 执行INT指令
我的问题是,如果我有一个新的中断信息 "5.执行...指令"需要产生新的中断信息。我将中断程序的入口地址写在0:0010处,那CPU就知道会提取5号中断类型码吗?我的意思是CPU是怎么知道在什么情况下提取相应的中断类型码的...
阅读全文 |
评论次数(3) |
浏览次数(674) |
所属类型(默认类型)
[2008-06-19 09:44] 最近才看到可以写自己的学习博客,贴上自己第11章学习作业-实验11
编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母。
描述如下:
名称:letterc
功能:将以0结尾的字符串中的小写字母转变成大写字母
参数:ds:si指向字符串首地址
编程思路:(此程序比原书上要求有稍作修改:已将其显示)
因此段字符串以0结尾,所以用到JCXZ指令。将ds:si字符移到CX,然后将CX内容与小写字母a(61h)作比较,如小于则直接转入显存,大于则减去20H后再转入显存,循环一次,si,di加1,直到遇到0为止。
assume cs:codesg
datasg segment
...
描述如下:
名称:letterc
功能:将以0结尾的字符串中的小写字母转变成大写字母
参数:ds:si指向字符串首地址
编程思路:(此程序比原书上要求有稍作修改:已将其显示)
因此段字符串以0结尾,所以用到JCXZ指令。将ds:si字符移到CX,然后将CX内容与小写字母a(61h)作比较,如小于则直接转入显存,大于则减去20H后再转入显存,循环一次,si,di加1,直到遇到0为止。
assume cs:codesg
datasg segment
...
阅读全文 |
评论次数(5) |
浏览次数(651) |
所属类型(汇编作业)