初学汇编,这题目不知道怎么解决。。。。

cbenny 2006-04-25 07:17:19
在STRBUFFER字符串中寻找STRI中指定的两字符出现的个数
数据段定义如下:
DSEG SEGMENT PARA 'Data'

STRBUFFER DB 'DBDBDDBDBBDBBDDBDBDB' COUNT EQU $-STRBUFFER
STR DB 'DB'
MSG DB "THE NUMBER OF 'DB' IS : "NUM DB ? DB 0AH,0DH,'$‘
DSEG ENDS

谢谢~~~
...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paullbm 2006-04-25
  • 打赏
  • 举报
回复
上面程序中把你在数据段中定义的用于存储个数的变量NUM不小心删掉了。如果要使用到NUM的话,程序如下:

assume cs:code,ds:dseg
DSEG SEGMENT PARA 'Data'

STRBUFFER DB 'DBDBDDBDBBDBBDDBDBDB'
COUNT EQU $-STRBUFFER
STR DB 'DB'
MSG DB "THE NUMBER OF 'DB' IS : ",0AH,0DH,'$'
NUM DB ?
DSEG ENDS

code segment
start:
mov ax,DSEG
mov ds,ax
mov ax,word ptr STR

mov NUM,0 ;NUM用于存储个数
mov cx,COUNT
lea si,STRBUFFER
s: mov bx,[si]
cmp ax,bx
jne next
inc NUM
next: inc si
loop s

mov ah,9
lea dx,MSG
int 21h

mov dl,NUM
mov dh,0
add dl,30h ;使dl的值成为可显示的阿拉伯数字。
mov ah,2
int 21h

mov ax,4c00h
int 21h
code ends
end start
paullbm 2006-04-25
  • 打赏
  • 举报
回复
assume cs:code,ds:dseg
DSEG SEGMENT PARA 'Data'

STRBUFFER DB 'DBDBDDBDBBDBBDDBDBDB'
COUNT EQU $-STRBUFFER
STR DB 'DB'
MSG DB "THE NUMBER OF 'DB' IS : ",0AH,0DH,'$'
DSEG ENDS

code segment
start:
mov ax,DSEG
mov ds,ax
mov ax,word ptr STR

mov di,0 ;di用于存储个数
mov cx,COUNT
lea si,STRBUFFER
s: mov bx,[si]
cmp ax,bx
jne next
inc di
next: inc si
loop s

mov ah,9
lea dx,MSG
int 21h

mov dx,di
add dl,30h ;使dl的值成为可显示的阿拉伯数字。
mov ah,2
int 21h

mov ax,4c00h
int 21h
code ends
end start
大熊猫侯佩 2006-04-25
  • 打赏
  • 举报
回复
简单而又不讲效率的话将 'DB' 放入寄存器中,你这里可以倒巧,原因是
要寻找的字符串正好是2字节。然后与源字符串依次比较并且计数即可。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧