汇编语言程序设计题目,在线等答案!!!急!
9. 统计字符串‘CHINA BEIJING $’的长度(假定串以‘$’结束)
追问:你这是c语言写的 我要求的是汇编语言写没看明白,前面的乱码是什么?而且从键盘输入指令也没看到你写啊 这是一个字符串 所以应该是
MOV AH ,OAH啊SHL是算术左移指令,而且你还应该用逻辑指令AND把它们加起来!
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
上一个:汇编语言 疑问~~
下一个:单片机汇编语言电子钟程序有 原理不懂 求讲解