当前位置:编程学习 > 汇编语言 >>

汇编语言中字符串的使用

要求:输入一个字符串,并统计字符个数.. data segment string1 db 20 len1 db 0 db 20 dup(0) string2 db 'please input string:',0dh,0ah,'$' data ends assume cs:code,ds:data code segment start: mov ax,data mov ds,ax lea dx,string2 mov ah,09h int 21h lea dx,string1 mov ah,0ah int 21h mov dl,[len1] mov ah,02h int 21h mov ax,4c00h int 21h code ends end start 这个程序为什么输出个数时是个乱码?我其实不是很懂字符串.. string1 db 20 len1 db 0 db 20 dup(0) 好像string后面的20是允许存储的最大字符串个数吧?那20个中包不包括'$'? 那len1是不是可以自动统计我输入的字符串个数? 如果我db 20 dup(0)那len1是不是一定已经是20个了?.. 还有就是'$'号是什么情况下用?.. 好像这里的string2后面如果不跟'$'号行不行? 那我这里输入的一个字符串string1后面是不是也要跟个'$'号?
追问:噢,那能把我另外的几个问题回答完不..
string1 db 20
len1 db 0
db 20 dup(0)
好像string后面的20是允许存储的最大字符串个数吧?那20个中包不包括'$'?
那len1是不是可以自动统计我输入的字符串个数?
如果我db 20 dup(0)那len1是不是一定已经是20个了?..
还有就是'$'号是什么情况下用?..
好像这里的string2后面如果不跟'$'号行不行?
那我这里输入的一个字符串string1后面是不是也要跟个'$'号?呵呵,输出,不是这样简单的。
len1,是二进制数字,必须把它变成十进制的个位、十位..,
再把各位数,都变换成ASCII码,放到DL中,最后才能输出到显示屏。 
这个应该怎么做到呢?..
我不是很懂..好像我len1里面存了12..那即是[len1]=12..那电脑是怎么存储的?..是直接在len1的地址里存0000 1100么?
还是分别存在len1地址中存了0000 0002,len1+1地址中存0000 0001呢?

能不能加你QQ请教..这样好像说不是很清楚..
答案:mov dl,[len1]
mov ah,02h
int 21h
----
呵呵,输出,不是这样简单的。
len1,是二进制数字,必须把它变成十进制的个位、十位..,
再把各位数,都变换成ASCII码,放到DL中,最后才能输出到显示屏。
其他:DATA SEGMENT
	 BUFFER DB 21,?,21 DUP(?)	 
DATA ENDS
DATAS SEGMENT
     NUM DB 0
     DATAS ENDS
CODE SEGMENT
	 ASSUME CS:DATA,DS:CODE,SS:DATAS
START:
    MOV AX,DATA
    MOV DS,AX
    MOV BX,DATAS
    MOV SS,BX
    MOV DX,OFFSET BUFFER  ;字符窜输入
    MOV AH,0AH
    INT 21H
    MOV DL,0AH    ;换行
   
    MOV AH,02H  
    INT 21H
    
    MOV AH,01H    ;单字符输入 存在AL中
    INT 21H
    
    LEA SI,BUFFER   ;确定CX的值即循环次数
    INC SI          
    MOV CX,0
    MOV CL,[SI]
    INC SI             
  R:  CMP [SI],AL
      JNZ TONG
      INC NUM
      
   TONG: INC SI
     LOOP R
     
     
     MOV DL,0AH
     MOV AH,02H
     INT 21H
     MOV DL,0DH  ;回车
      
      
     MOV DL,NUM
     ADD DL,30H    ;使转换为ASCII表示的数值
     MOV AH,02H
     INT 21H
     
    
     MOV AH,4CH
     INT 21H
   
   CODE ENDS
   END START 

上一个:汇编语言 怎么将输入的1个小于256的数字放入ax寄存器
下一个:MCGS汇编语言中不等于怎么表示?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,