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

我的博客

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

[2009-09-15 19:29] 16.3求sin值的程序

点击查看原图
编写一个子程序,计算sin(x)。并在屏幕中间显示结果。

源代码:

assume cs:codesg
codesg segment
start:
       mov al,60
       call showsin

       mov ax,4c00h
       int 21h



showsin:
        jmp short show
        table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180
        ag0 db '0',0
        ag30 db '0.5',0...
阅读全文 | 评论次数(3) | 浏览次数(295) | 所属类型(Assembly's Road)

[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) | 浏览次数(588) | 所属类型(汇编作业)

[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) | 浏览次数(602) | 所属类型(汇编作业)

[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) | 浏览次数(612) | 所属类型(汇编作业)

[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) | 浏览次数(637) | 所属类型(汇编作业)

[2009-09-11 14:50] 第十四章检测点14.1

题目(1):编程,读取CMOS RAM的2号单元的内容

分析:读取CMOS RAM要分两步:首先是把要读写的单元号送给70h(70h是地址端口,存放要访问的 CMOS RAM单元的地址)。其次是从端口71h(71h是数据端口,存放从选定的COMS RAM单元中读取的数据,或者要写入的数据)中读出2号单元的内容。

源代码如下:

assume cs:codesg
codesg segment
    start:
    mov al,2
    out 70h,al;把al中的数据2写入70h端口 
    in al,71h;读取存放在71h中2号单元的数据给al ...
阅读全文 | 评论次数(2) | 浏览次数(293) | 所属类型(汇编作业)

[2009-09-11 10:03] 第十三章实验13(3)

点击查看原图
题目:下面的程序,分别在屏幕上的第2、4、6、8行显示4句英文诗,补全程序。

assume cs:codesg
codesg 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,offsest s4
    row: db 2,4,6,8
    ...
阅读全文 | 评论次数(0) | 浏览次数(261) | 所属类型(汇编作业)

[2009-09-10 22:33] 实验13(1)

点击查看原图
题目:编写并安装Int 7ch中端例程,功能为显示一个用0结束的字符串,中断例程安装在0000:0200h处

参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串的首地址。

以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意int、iret指令执行前后的cs、ip和栈中的状态。

 

 assume cs:codesg  
datasg segment
    db "welcome to masm! ",0
datasg ends

codesg segment
    start: 
    mov ax,cs
    m...
阅读全文 | 评论次数(2) | 浏览次数(288) | 所属类型(汇编作业)
页码数(9):  1  2  3  4  5  6  7  8  9