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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  原泉混混,不舍昼夜。盈科而后进,放乎四海,有本着如是,是之取尔!
  • 『姓名』:杨逍
  • 『性别』:男『发送消息
  • 个人说明:
  • 详细信息『加为好友』
学习动态
最新留言

[2009-09-20 08:53] 在虚拟机vmware下安装好dos后,在里面写好程序后,如何进行编译?

急急急!在虚拟机vmware下安装好dos后,在里面写好程序后,如何进行编译?或者如何把编译好的文件拷贝进dos里面去。请各位帮忙解答,在这里先谢过了!!...
阅读全文 | 评论次数(0) | 浏览次数(779) | 所属类型(汇编作业)

[2009-09-19 21:11] 17.3字符串的接收、显示以及删除(2)

点击查看原图
题目:编程,编写一个接受字符串输入的程序,应该有如下功能:

(1)在输入的同时需要显示这个字符串

(2)一般在输入回车符后,字符串输入结束

(3)能够删除已经输入的字符

解答:只是写个测试程序而已



assume cs:codesg,ds:datasg
datasg segment
    db 4000 dup(0)
datasg ends

codesg segment
    start: 
           
    mov ax,datasg
    mov ds,ax
    mov si,0 
    
    mo...
阅读全文 | 评论次数(1) | 浏览次数(724) | 所属类型(汇编作业)

[2009-09-17 19:40] 检测点17.1

题目:在int 16h中断例程中,一定要设置IF=1的指令。这种说法是对的吗?

解答:开始的时候,感觉这句话应该是错的,当时是想int 16h只是从键盘缓冲区中读取数据,应该是可以不用设置IF的。但是这种说法只有在键盘数据缓冲区中有数据时正确。然而我们不能确保键盘缓冲区中会一直有数据,如果没有键盘缓冲区中没有数据,那马将会造成死锁。所以我们还是要设置IF=1使得能够响应int 9的中断。便于int 9向键盘缓冲区中写入数据,以便int 16h能个取得键盘缓冲区中的数据。

综上所述,此句话的说法是正确的。...
阅读全文 | 评论次数(2) | 浏览次数(982) | 所属类型(汇编作业)

[2009-09-17 14:07] 16实验

点击查看原图
编写包含多个功能子程序的中断例程 

安装一个新的int 7ch中断例程,为显示输出提供如下功能子程序: 

(1)清屏 
(2)设置前景色 
(3)设置背景色 
(4)向上滚动一行 

入口参数说明: 

(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行; 
(2)对于2、3号功能,用al传送颜色值,(al)取值范围为[0,1,2,3,4,5,6,7] 

分析:对于本实验,第一点是:各个子程序的编写,这并不难,参考书上很轻松就能搞定。第二点是:设置int 7ch的中断向量表项是关键,刚开始我也发现是调用时子程序的地...
阅读全文 | 评论次数(0) | 浏览次数(737) | 所属类型(汇编作业)

[2009-09-15 14:55] 检测点16.2

题目:下面的程序将datasg段的中a处的8个数据累加,结果保存到b处的字中,补全程序

assume cs:codesg,es:datasg
datasg segment
    a db 1,2,3,4,5,6,7,8
    b dw 0 
datasg ends
codesg segment

    start:
    ____(1)____
    ____(2)____
    
    mov si,0
    mov cx,8

    s:
    mov al,a[si]
    mov ah,0
    add b,ax
   ...
阅读全文 | 评论次数(2) | 浏览次数(589) | 所属类型(汇编作业)

[2009-09-15 13:50] 检测点16.1

下面的程序中将codesg段的8个数据累加,结果存储到b处的双字节中,补全程序。
assume cs:codesg
codesg segment
    a dw 1,2,3,4,5,6,7,8
    b dd 0
  
    start:
    mov si,0
    mov cx,8
  s:
    mov ax,__(1)___
    add ___(2)___,ax
    adc ___(3)___,0
    add si,___(4)___
    loop s

    mov ax,4c00h
    int 21h

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

[2009-09-14 21:58] 实验15

点击查看原图
题目:安装一个新的int9中断例程,功能:在dos下,按下‘A'键后,除非不再松开,如果松开,就显示满屏的'A';其他键照常处理。

源代码:

assume cs:codesg
stacksg segment
    db 128 dup(0)
stacksg ends
codesg segment
start:
    mov ax,stacksg
    mov ss,ax
    mov sp,128

;;;;;;;复制int9的中段程序到0000:0204h处
    mov ax,0
    mov es,ax
    mov di,204h;设...
阅读全文 | 评论次数(2) | 浏览次数(624) | 所属类型(汇编作业)

[2009-09-14 14:12] 检测点15.1

点击查看原图
题目(一):仔细分析一下上面的int9中断例程,看看是否可以精简?

对于程序段:
pushf

pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0] 

可以精简为:

___(1)_____

___(2)_____

 

解答:因为是在int9中调用原来的int 9中断例程,而在我们进入int9这个中断程序时要做以下步骤: 
(1_1)取得中断类型码N;   
(1_2)标志寄存器入栈,TF=0、IF=0;   
(1_3)CS、IP入栈;   
(1_4)(IP...
阅读全文 | 评论次数(2) | 浏览次数(613) | 所属类型(汇编作业)

[2009-09-12 08:47] 第十四章实验14

点击查看原图
题目:以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。

分析:因为CMOS RAM中存储的时间信息的存储单元是:

秒:0  分:2 时:4     日:7  月:8    年:9

并且这些数据事宜BCD码的形式存储的。其次是要读取n好单元的BCD码的方法:首先是要把单元号n送给70h端口,再从71h端口中读取数据。再次是要把BCD码表示的月份以十进制的形式显示到屏幕上,这一步首先要把从CMOS RAM的n号单元读出一个字节,分为两个表示BCD码值的数据。再把分开的数据加上30h即可得到相应的ASCII码字符。第三:肯定要用循环读出各个年月日时分秒的端口的值。第四:把...
阅读全文 | 评论次数(2) | 浏览次数(283) | 所属类型(汇编作业)

[2009-09-11 15:48] 检测点14.2

点击查看原图
题目:编程,用加法和移位指令计算(ax)=(ax)*10。提示,(ax)*10=(ax)*2+(ax)*8

分析:这里要用到shl(shift logic left)逻辑左移,由于左移一位相当于原来的数乘以2,右移一位相当于原来的数除以2。所以(ax)*2 相当于ax左移一位,而(ax)*8相当于ax左移3位。

源代码如下

assume cs:codesg
codesg segment
    start:
    mov ax,4
    mov dx,ax
    shl dx,1;把dx中的内容(也就是ax中的内容)给左移一位
    mov cl,3;由于...
阅读全文 | 评论次数(2) | 浏览次数(638) | 所属类型(汇编作业)
页码数(6):  1  2  3  4  5  6