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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2009-09-06 10:37] 17.3

点击查看原图
;子程序:字符串的入栈,出栈和显示
;参数说明:(ah)=功能号,0表示入栈,1表示出栈,2表示显示
;ds:si指向字符栈空间
;对于0号功能,(al)=入栈字符
;对于1号功能,(al)=返回的字符
;对于2号功能,(dh),(dl)=字符串在屏幕上显示的行列位置
assume cs:code,ds:data 
data segment 
  db 1024 dup(0) 
data ends 
code segment 
start:  
           mov ax,data 
           mov ds,ax 
           mov dl,0
        ...
阅读全文 | 评论次数(1) | 浏览次数(1077) | 所属类型(汇编作业)

[2009-06-07 11:15] 检测点17.1

点击查看原图
“在int 16h中断例程中,一定有设置if=1的指令”这句话的是对的,因为只有if=1了,才能引发int 9中断,进而才能引发int 16h,如果if不等于1,那键盘缓冲区里的数据就一直为空了,16号中断一直循环等待,可我看有人说“跟踪int16h内部,第一条语句就是sti ”我该怎么样理解int 16h的内部呢,我用debug跟踪后发现执行完int 16h后直接到下一条语句了,是不是我错了,希望知道的帮个忙。...
阅读全文 | 评论次数(2) | 浏览次数(1121) | 所属类型(汇编作业)

[2009-06-06 10:37] 实验16

点击查看原图
;功能:
;用ah寄存器传递功能号,0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚一行
;对于2,3号功能,用al传递颜色值,(al)∈{1,2,3,4,5,6,7}
;(1)清屏:将显存中当前屏幕中的字符设为空格符
;(2)设置前景色:设置显存中当前屏幕处于奇地址的属性字节的第0,1,2位
;(3)设置背景色:设置显存中当前屏幕处于奇地址的属性字节的第4,5,6位
;(4)向上滚动一行:以此将第n+1的内容复制到第n行处,最后一行为空
assume cs:code,ss:stack 
stack segment 
db 128 dup (0) 
stack ...
阅读全文 | 评论次数(1) | 浏览次数(1150) | 所属类型(汇编作业)

[2009-05-30 10:24] 检测点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 ends
end start...
阅读全文 | 评论次数(1) | 浏览次数(736) | 所属类型(汇编作业)

[2009-05-30 09:33] 检测点16.1

点击查看原图
下面的出现将code段中a处的8个数据累加,结果存储到b处的双字中,补全程序:
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 cs:[16],ax;这里没必要加word ptr因为已经知道它是做字操作,
        adc word ptr cs:[18],0
        add si,2
        loop s
        
        mov ax,4c00h
        int 21h

code ends
end start ...
阅读全文 | 评论次数(3) | 浏览次数(810) | 所属类型(汇编作业)

[2009-05-29 13:05] 实验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

        mov ax,0
        mov es,ax

        mov si,offset int9
        mov di,204h
        mov cx,offset int9end-offset int9
        cld
        rep movsb

        push es:[9*4]
        pop es:[200h]
        push e...
阅读全文 | 评论次数(1) | 浏览次数(806) | 所属类型(汇编作业)

[2009-05-28 21:40] 检测点15.1

(1)pushf
   call dword ptr ds:[0]
(2)按书的提示走,只要在 新的int 9中断例程的入口地址处加上cli和sti即
cli
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
sti
开始觉得完事了,可我又将CLI和STI颠倒了个位置,即
sti
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
cli
此时出现个好玩的上面的可以正常看到,而下面的必须DOS全屏才可以看到,不知道是为什么,希望会的帮帮我...
阅读全文 | 评论次数(1) | 浏览次数(1101) | 所属类型(汇编作业)

[2009-05-24 17:11] 实验14

点击查看原图
assume cs:code,ds:data
data segment
  db 9,8,7,4,2,0
data ends
stack segment
  db '/','/',' ',':',':'
stack ends
code segment
start:  mov ax,data
        mov ds,ax
        mov si,0  ;指向字符串首地址
        mov di,0

        mov cx,6
    s1:        push cx
        mov al,[si];读取CMOS RAM的相应单元内容
        out 70h,al
        in al,71h

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

[2009-05-23 14:58] 检测点14.2

点击查看原图
编程,用加法和移位指令计算(ax)=(ax)*10假设(ax)=3,所以(ax)=30=1eH
assume cs:code
code segment
start:  mov ax,3
        mov bx,ax
        shl bx,1
        mov cl,3
        shl ax,cl
        add ax,bx

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

[2009-05-23 14:47] 检测点14.1

点击查看原图
(1)编程,读取CMOS RAM的2号单元的内容:
assume cs:code
code segment
start:  mov al,2
        out 70h,al;将2送入端口70H
        in al,71h;从端口读2号内容

        mov ax,4c00h
        int 21h

code ends
end start
这里如果你直接跟踪后发现它不会显示时间的分钟的,确切的说是显示时间被覆盖了,因为OUT时向下运行多运行一条,IN又多运行了一条,所以再后面加两条才能看到,即我加了NOP后,跟踪发现它就显示分钟了,哈哈
(2)编程,向CMOS RAM的2号单元写入0
ass...
阅读全文 | 评论次数(1) | 浏览次数(791) | 所属类型(汇编作业)
『 查看更多文章 』