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

我的博客

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

[2010-09-04 23:15] 习题3.39

设从地址F000:0000H开始的1K字节内存区域是缓冲去。请写一个可收集该区域所有子串“OK”开始地址的程序。

答:
;-----------------------------------------------------
assume  cs:code
data    segment
        dw      8 dup (0)      ;存放子串是OK的偏移地址
data    ends

code    segment
start:
        mov ax,0f000h          ;设定DS地址
        mov ds,ax
        mov ax,data            ;设定ES地址
        mov es,ax
        mov si,0               ;缓冲区首地址
        mov bx,0               ;偏移地址的初始化地址
        mov cx,1024            ;计数器1024个字
L:      mov ax,[si]            ;将字串装入AX
        xchg al,ah             ;高地位交换
        cmp ax,'OK'            ;如果是OK
        je a                   ;则跳至标号a
        jmp jx                 ;否则,继续循环
a:      mov es:[bx],si         ;将OK的偏移地址保存
        add bx,2               ;指向下一空间
jx:     add si,2               ;指向下一字串
        loop L

        mov ah,4ch
        int 21h
code    ends
end     start
;-----------------------------------------------------
评论次数(0)  |  浏览次数(293)  |  类型(汇编习题集) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码