汇编网首页登录博客注册
ghrd的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  爱偷懒,没耐性,记忆力很差,学习为了磨练意志。
  • 『姓名』:                    
  • 『性别』:男    『发送消息
  • 个人说明:纯属业余,感觉比傻乎乎玩网游有意思。
  • 详细信息『加为好友』
学习动态
最新留言
好友圈
友情链接

[2008-08-06 12:02] 第17章 课程设计2

最近到外地工作,没能及时做完课程设计2,
前几天刚写完,在软驱上调试通过,
程序内还有需要优化的地方,以后再改。

assume cs:code
code segment
 kstart:mov ax,cs ;读取磁盘上第2扇区数据到内存
        mov es,ax
        mov bx,7e00h

        mov al,1
        mov ch,0
        mov cl,2
        mov dl,0
        mov dh,0

        mov ah,2
        int 13h

 ...
阅读全文 | 评论次数(2) | 浏览次数(945) | 所属类型(汇编作业)

[2008-07-10 18:24] 第17章 实验17

1、找一个还可以用的软驱,一张完好的软盘还真不容易。
  有位高手说可以用虚拟PC,和虚拟软驱,
  可我总觉得还是真家伙好,听着软驱吱嘎嘎的声音,过瘾。
2、还要注意从软盘读取得内容放在内存的位置,
每读一个扇区就要找大过512字节的内存空间。
我是放在0b800,这样还可以在显示器上验证是否正确。

assume cs:code
code segment
  start:mov ax,cs
        mov ds,ax
        mov si,offset rwda
        mov ax,0
        mov es,ax
       ...
阅读全文 | 评论次数(2) | 浏览次数(937) | 所属类型(汇编作业)

[2008-07-07 09:49] BAT批处理文件语法(转)

扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 

==== 注 ======================================= 
.bat是dos下的批处理文件 
.cmd是nt内核命令行环境的另一种批处理文件 
从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都...
阅读全文 | 评论次数(1) | 浏览次数(1661) | 所属类型(学习相关)

[2008-07-05 09:50] 第17章 检测点17.1

(1)
答:对。
int 16h中断例程执行如下:
1、检测键盘缓冲区中是否有数据;
2、没有则继续做第1步;
3、读取缓冲区第一个字单元中的键盘输入;
4、将读取的扫描码送入ah,asc码送入al;
5、将已读取的键盘输入从缓冲区中删除。

在第1、2步可以看出,缓冲区内没有数据的时候,
int 16h会始终等待数据到来,
这时,IF必须是1,int 9h才可能被cpu响应
否则int 16h不能再执行下去。...
阅读全文 | 评论次数(1) | 浏览次数(855) | 所属类型(汇编作业)

[2008-07-04 22:31] 推荐博文 第16章 实验16

这个程序是编写int 7ch中断例程
程序在编译的时候,table,sub1,sub2,sub3,sub4都已经确定
而在中断例程复制到0000:0200后,ip要改变为0200h
table,sub1,sub2,sub3,sub4会发生错位
因此,我将中断例程放在程序开头,主程序放在后面,
并且0000:0200 改为0200:0000
这样,中断例程复制到0200:0000后
table,sub1,sub2,sub3,sub4不会发生错位

如果不这样做的话,
就需要计算中断例程与code的偏移,
还要考虑0000:0200 中 200h的偏移


assume...
阅读全文 | 评论次数(5) | 浏览次数(1399) | 所属类型(汇编作业)

[2008-07-04 16:58] 第16章 检测点16.2

补全程序
assume cs:code,es:data

data segment
   a db 1,2,3,4,5,6,7,8
   b dw 0
data ends

code segment
start:mov ax,data
      mov es,ax
      mov si,0
      mov cx,8
   s: mov al,a[si]
      mov ah,0
      add b,ax
      inc si
      loop s

      mov ax,4c00h
      int 21h
code e...
阅读全文 | 评论次数(1) | 浏览次数(763) | 所属类型(汇编作业)

[2008-07-04 16:42] 第16章 检测点16.1

补全程序
assume cs:code
code segment
      a dw 1,2,3,4,5,6,7,8
      b dd 0
start:mov si,0
      mov cx,8
   s: mov ax,a[si]
      add b,ax
      adc b[2],0
      add si,2
      loop s

      mov ax,4c00h
      int 21h
code ends
end start...
阅读全文 | 评论次数(2) | 浏览次数(810) | 所属类型(汇编作业)

[2008-07-04 15:55] 第15章 实验15

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     ;(ds)=(cs)

        mov ax,0
        mov es,ax  ;es指向int9中断例程存放段

        mov si,offset int9
        mov di...
阅读全文 | 评论次数(1) | 浏览次数(636) | 所属类型(汇编作业)

[2008-07-04 13:54] 第15章 检测点15.1

(1)
可以精简为
push f
call dword ptr ds:[0]

因为,在int 9中断例程执行前,
硬件系统已经完成了3步工作
1、键盘产生扫描码
2、扫描码送入60h端口
3、引发9号中断
在第3步就要修改IF=0,TF=0

(2)
程序中有2处要增加cli,sti
第一处 在设置新的int 9中断入口地址
cli
mov word ptr es:[9*4],offset int 9
mov es:[9*4+2],cs
sti

第二处 在恢复原int 9中断入口地址
cli
push ds:[0]
pop es:[9*4]
...
阅读全文 | 评论次数(1) | 浏览次数(904) | 所属类型(汇编作业)

[2008-07-04 11:20] 第14章 实验14

assume cs:code

stack segment
    db 32 dup (0)  ;栈
stack ends

code segment
     s1:db '00/00/00 00:00:00','$' ;定义显示格式
     s2:db 9,8,7,4,2,0    ;存放要读取的端口
  start:mov ax,stack
        mov ss,ax
        mov sp,32   ;初始化栈

        mov ax,cs
        mov ds,ax
        mov bx,offset s1  ;...
阅读全文 | 评论次数(1) | 浏览次数(959) | 所属类型(汇编作业)
『 查看更多文章 』