汇编语言——实验十二

定义:
BUFF DB ‘ABCD E F G H I J K EFGHIJK EFGHIJK
STR1 DB 12 DUP(?)
LEN DB ?
用串指令结合子过程的概念,编写程序完成以下操作:
(1)特定赋值子过程, 对字符串STR1全部置‘*’符。
(2)拷贝子过程,参数包括方向:
如,(1)从左到右把BUFF中的字符串传送到STR1。
(2)从右到左把BUFF中的字符串传送到STR1。
(3)字符串比较子过程:
比较BUFF与STR1两个字符串是否相等,如相等则DX=1,
否则DX=0。
(4)匹配算法子过程:
查找BUFF中有无字符 , 此 外 , 把 字 符 ,此外,把字符 出现的次数计入
BX寄存器。

(1)特定赋值子过程,对字符串STR1全部置‘*’符。

代码:

data segment
        buff db 'abcd$efghijk$'
        str1 db 12 dup(?)
        len db ?
data ends
code segment
        assume cs:code,ds:data
start:
         mov ax,data
         mov ds,ax
         mov cx,12
         mov bx,0
         mov dl,'*'
kk:     mov str1[bx],dl
          inc bx
          loopne kk
          mov ah,4ch
          int 21h
code ends
          end start

运行结果:
在这里插入图片描述

str1字符串的地址是000D+BX,
赋值完之后:
在这里插入图片描述

(2)拷贝子过程,参数包括方向: 如,

1.从左到右把BUFF中的字符串传送到STR1。

代码:

data segment
        buff db 'abcd$efghijk$'
        str1 db 12 dup(?)
        len db ?
data ends
code segment
        assume cs:code,ds:data
start:
         mov ax,data
         mov ds,ax
         mov es,ax
         lea si,buff
         lea di,str1
         mov cx,12
         cld
         rep movsb
         mov ah,4ch
         int 21h
code ends
          end start

运行结果:
在这里插入图片描述

buff的地址0000,str1的地址000D
在这里插入图片描述

2.从右到左把BUFF中的字符串传送到STR1。

代码:

data segment
        buff db 'abcd$efghijk$'
        str1 db 12 dup(?)
        len db ?
data ends
code segment
        assume cs:code,ds:data
start:
         mov ax,data
         mov ds,ax
         mov es,ax
         mov cx,13
         lea si,buff
         add si,12
         lea di,str1
kk:
          mov bl,ds:[si]
          mov es:[di],bl
          inc di
          dec si
          loop kk
          mov ah,4ch
          int 21h
code ends
          end start

运行结果:
在这里插入图片描述

buff的地址0000,str1的地址000D
在这里插入图片描述

(3)字符串比较子过程: 比较BUFF与STR1两个字符串是否相等,如相等则DX=1, 否则DX=0。

代码:

data segment
        buff db 'abcd$efghijk$'
        str1 db 'abcd$eeghij$'
        len db ?
data ends
code segment
        assume cs:code,ds:data
start:
         mov ax,data
         mov ds,ax
         mov es,ax
         lea si,buff
         lea di,str1
         mov cx,12
         cld
         mov cx,13
         repe movsb
         mov dx,1
         jnz no
         jmp exit
no:
         mov dx,0
exit:
         mov ah,4ch
         int 21h
code ends
          end start

运行结果:
在这里插入图片描述

(4)匹配算法子过程: 查找BUFF中有无字符 , 此 外 , 把 字 符 ,此外,把字符 出现的次数计入 BX寄存器

data segment
        buff db 'abcd$efghijk$'
        str1 db 12 dup(?)
        len db ?
data ends
code segment
        assume cs:code,ds:data
start:
         mov ax,data
         mov ds,ax
         mov es,ax
         lea si,buff
         mov cx,13
         mov bx,0
         mov dl,'$'
kk:
         cmp dl,ds:[si]
         inc si
         inc bx
         jc no
         jmp next
no:
         dec bx
next:
         loop kk
exit:
         mov ah,4ch
         int 21h
code ends
          end start

运行结果:
在这里插入图片描述

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值