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

汇编语言程序设计题目,在线等答案!!!急!

9. 统计字符串‘CHINA BEIJING $’的长度(假定串以‘$’结束)
追问:你这是c语言写的 我要求的是汇编语言写没看明白,前面的乱码是什么?而且从键盘输入指令也没看到你写啊 这是一个字符串 所以应该是
MOV AH ,OAH啊SHL是算术左移指令,而且你还应该用逻辑指令AND把它们加起来!
答案:MOV AL,  A     ;取来A
XOR AH,AH     ;高8位清零
SHL  AX,  1      ;16位数乘以2
MOV BX, AX    ;暂存
SHL  AX,  1      ;A乘以4
SHL  AX,  1      ;A乘以8
ADD AX, BX     ;加上2A,即为10*A

END
其他:;----------------------------------
;我帮你写了个可以输入的然后统计长度
;若直接统计你题目给定的字符串也可以写一个


;********************************数据段
data segment
          array db  100 DUP(0)                    ;数组开辟空间
        string1 db "Please input a string ended with $"       ;字符串以$结束
        string2 db "The length of string is: $"   
           crlf db 13,10,13,10,"$"                            ;13回车,10换行
        data ends
;**********************************
;**********************************代码段
code segment
        assume ds:data,cs:code        ;段对应关系的说明
        main proc far                 ;far子程序调用时的参数 
;-----------------------------------------                
        start:         
                push ds
                sub ax,ax             
                push ax               
;-------------------------------------------------                
                mov ax,data           ;将数据传送如数据段
                mov ds,ax 
;---------------------------------------                
;主程序开始  
;---------------------------------------------------------        
;显示"Please input a string ended with $"的内容
        mov ah,09h
        lea dx,string1          
        int 21h 
        mov dl,24h              ;显示'$'
        mov ah,02h
        int 21h 
        mov dl,3ah              ;显示':'
        mov ah,02h
        int 21h        
;----------------------------------------------------------
;键盘输入字符串以$结束     
        mov bx,offset array     ;设定基址
        mov di,0      
   input:                
        mov ah,01h
        int 21h    
        cmp al,24h              ;和'$'进行比较
        je next   
        mov [bx+di],al
        inc di 
        jmp input
    next:
        mov [bx+di],24h          ;存储$符号
;--------------------------------
;统计
       mov si,0 
       mov cl,0
    again:
       mov al,[bx+si]
       cmp al,24h
       je next2
       inc cl 
       inc si
       jmp again
    next2: 
        mov ah,09h
        lea dx,crlf         
        int 21h         
        mov ah,09h
        lea dx,string2          
        int 21h 
        
        add cl,30h
        mov dl,cl
        mov ah,02h
        int 21h 

        ret                                 
                             
   main endp                   ;主函数结束
;********************************************             
              code ends        ;代码段定义结束
              end  start       ;这个程序段全部结束,程序段不但有代码段还有其他段 #include<stdio.h>
main() 
{ 
char a[100];
char *p=a; 
scanf("%s",a);
while(*p!='\0') 
{ 
if(*p>='a' && *p<='z') *p=*p-32; 
printf("%c",*p);
p++; A*10 = A*(8+2)
*8 = 左移三次
*2 = 左移一次
指令自己写吧? 编制程序完成 12h,45h,0F3h,6Ah,20h,0FEh,90h,0C8h,57h 和34h等10DATAS SEGMENT bdata db 01h,02h,03h,04h,05h,06h,07h,08h,09h, 编制程序完成 12h,45h,0F3h,6Ah,20h,0FEh,90h,0C8h,57h 和34h等10DATAS SEGMENT bdata db 01h,02h,03h,04h,05h,06h,07h,08h,09h, 编制程序完成 12h,45h,0F3h,6Ah,20h,0FEh,90h,0C8h,57h 和34h等10DATAS SEGMENT bdata db 01h,02h,03h,04h,05h,06h,07h,08h,09h, 编制程序完成 12h,45h,0F3h,6Ah,20h,0FEh,90h,0C8h,57h 和34h等10DATAS SEGMENT bdata db 01h,02h,03h,04h,05h,06h,07h,08h,09h, MOV    AL  ,A
SHL     AL  , 1
MOV    AL  , BL
SHL     AL  ,2
ADD    AL  ,BL MOV AL,BYTE PTR X
ADD AL,BYTE PTR X+1
ADD AL,BYTE PTR X+2
ADD AL,BYTE PTR X+3
MOV BYTE PTR SUM,AL 

上一个:汇编语言 疑问~~
下一个:单片机汇编语言电子钟程序有 原理不懂 求讲解

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