汇编语言——实验十二

Posted 大灬白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言——实验十二相关的知识,希望对你有一定的参考价值。

定义:
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

运行结果:

以上是关于汇编语言——实验十二的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言(王爽) 实验十一

汇编语言(王爽)实验十

汇编语言——实验十四

汇编语言——实验十一

汇编语言(王爽 第三版)实验十六

汇编语言(王爽 第三版)实验十三