. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->自由讨论区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  大家来写程序  [待解决] 回复[ 4次 ]   点击[ 317次 ]  
qrtboy06
[帖 主]   [ 发表时间:2008-06-27 22:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-19 11:52
统计数组"this is a c program"中字符"a"的个数,用子程序实现..
mess
[第1楼]   [ 回复时间:2008-06-28 11:02 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
呵呵
很简单啊,在c语言中不过是一个for循环加个if判断。楼主可以试试

for循环好做,第九章的实验就做了,加if判断后面讲过了,不知道楼主学到了没有。
dickyq
[第2楼]   [ 回复时间:2008-06-28 19:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-29 22:09
我来试试!见笑了!

;以下实现方法只统计 包含10 个a以下字符的方法,因为超过10个a,就要做16进制转换成ASCII码显示的方法
assume cs:code,ds:data
data segment
        strd db 'this is a c program','$'
        show db 'This string have  '
        count db 0
        strend db ' a on it!$'
data ends
code segment
start:        mov ax,data
                mov ds,ax
                mov si,offset strd
                mov bx,0
                cld
        s1:        lodsb                        ;读入strd标识的单个字符
                cmp al,'$'                ;判断是否结束符号
                je s_end
                cmp al,'a'                ;和字符 a 比较
                je addbx
                jmp s1
addbx:        inc bx                        ;统计是字符a 加1
                jmp s1
s_end:        mov di,offset count        ;以下为显示 show 段以$为结束符的字符串
                mov byte ptr [di],bl
                add  byte ptr [di],30h
                mov dx,offset show 
                mov ah,9
                int 21h
                mov ax,4c00h
qrtboy06
[第3楼]   [ 回复时间:2008-06-29 08:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-19 11:52
嗯,方法还可以,不过没有涉及到子程序...
dickyq
[第4楼]   [ 回复时间:2008-06-29 21:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-29 22:09
不知道楼主为什么一定要子程序,再来试试!

;以下实现方法只能正确显示 包含999 个a以下字符的方法
assume cs:code,ds:data
data segment
        strd db 'this is a c program','$'
        show db 'This string have  '
        count db 3 dup (0)
        strend db ' a on it!$'
data ends
code segment
start:        mov ax,data
                mov ds,ax
                mov si,offset strd
                mov bx,0
                mov ah,0
                call scanstr
                mov ax,4c00h
                int 21h
;scanstr 说明: 查找字符串包含多少个a
;入                  参:  si
;出                 参:  无        
scanstr proc
snext:        lodsb
                cmp al,'$'
                je s_ret
                cmp al,'a'
                jne next
                inc bx
  next: jmp snext
 s_ret: call hextoasc
                mov dx,offset show
                mov ah,9
                int 21h
                ret
scanstr endp
;hextoasc 说明: 16进制转成10进制,这个没做防溢出处理
;入   参:        BX
;出  参 :     无
hextoasc  proc
                mov cl,10
                mov ax,bx
                div cl
                add ah,30h
                mov count[2],ah
                xor ah,ah
                div cl
                add ax,3030h
                mov word ptr count,ax
                ret
hextoasc  endp
code ends
         end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved