汇编语言程序 题目请教 求高人解答!

汇编语言程序 题目请教 求高人解答!,第1张

1

DATA SEGMENT

SRC DB 'How are you'

DES DB 'are'

DATA ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV SI,OFFSET SRC

MOV DI,OFFSET DES

LOP: MOV CX,3

CLD

REPZ CMPSB

CMP CX,0

JZ NEXT

MOV DI,OFFSET DES

ADD SI,CX ;si-(3-cx)+1

SUB SI,2

JMP LOP

NEXT: AND DH,0

MOV DX,SI ;SI存放'are'出现的末位置

SUB DL,3

ADD DL,30H ;显示位'are'的起始位置

MOV AH,2

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

2

DATA SEGMENT

BUFFER DB 'How are you',00H

DATA ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUFFER

LOP1: MOV BL,[SI]

CMP BL,20H

JNZ NEXT ;如果为逗号,将后面的数据前移

MOV DI,SI

LOP2: MOV BL,[DI+1]

MOV [DI],BL

INC DI

MOV BL,[DI]

CMP BL,0H ;如果为00,跳出内循环

JNZ LOP2

NEXT: INC SI

MOV BL,[SI]

CMP BL,0H ;如要[SI]小于为00H,跳出循环

JNZ LOP1

MOV AH,4CH

INT 21H

CODE ENDS

END START

3

DATA SEGMENT

BUF DB 60

N DB

CHAR DB 60 DUP(0)

STR DB 'INPUT NUM:','$'

DATA ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET STR

MOV AH,9

INT 21H

MOV DX,OFFSET BUF

MOV AH,10

INT 21H

MOV AH,2

MOV DL,0AH

INT 21H

MOV DL,0DH

INT 21H

MOV CL,N

MOV SI,OFFSET CHAR

AND BH,0

MOV BL,N

ADD SI,BX

LOP1: DEC SI

MOV DL,[SI]

MOV AH,2

INT 21H

LOOP LOP1

MOV AH,4CH

INT 21H

CODE ENDS

END START

4

DATA SEGMENT

BUF DW 1234H,3456H,2134H,7893H,3456H

RESULT DW 0,0

DATA ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME DS:CODE,SS:STACK,CS:CODE

START: MOV AX,DATA

MOV DS,AX

CALL PLUS_N

MOV SI,OFFSET RESULT

MOV BX,[SI+2]

CALL DISPLAY

MOV BX,[SI]

CALL DISPLAY

MOV AH,4CH

INT 21H

;功能:计算多字节相加

;入口参数:BUF

;出口参数:RESULT

PLUS_N PROC

AND DX,0

AND AX,0

MOV CL,5

MOV SI,OFFSET BUF

LOP: ADD AX,[SI]

ADC DX,0

INC SI

INC SI

LOOP LOP

MOV SI,OFFSET RESULT

MOV [SI],AX

MOV [SI+2],DX

RET

PLUS_N ENDP

;功能:显示十六进数

;入口参数:BX

DISPLAY PROC

MOV CH,4

LOP1: MOV CL,4

ROL BX,CL

MOV DL,BL

AND DL,0FH

ADD DL,30H

CMP DL,3AH

JB NEXT

ADD DL,7

NEXT: MOV AH,2

INT 21H

DEC CH

CMP CH,0

JNZ LOP1

RET

DISPLAY ENDP

CODE ENDS

END START

你的答案是错的

答案是ax=2,bx=4,cx=2,dx=2 你可以自己编写一个程序调试

START:MOV AX,01H

MOV BX,02H

MOV CX,03H

MOV DX,04H

;前面4行使ax=1,bx=2,cx=3,dx=4

NEXT:INC AX ;ax+1执行后ax=2

ADD BX,AX ;bx=bx+ax执行后bx=4

SHR DX,1 ;dx向右移一位,相当于dx除于2,执行后dx=2

LOOPE NEXT ;重点来了,这一行的loope他的执行具体是,先使cx减1,然后再判断cx是否等于零,并且判断标志位ZF是否等于1,如果cx<>0并且zf=1那么就转到标号,否则退出循环上一行的shr dx1是影响ZF的,结果ZF是等于0,所以这里退出循环,执行完后cx=2

1)原代码x没声明,算法有错误。

#include "stdioh"

int main(void){

    int i,n;

    float s=00,x,t1=00,t2=10;

    printf("x,n=");

    scanf("%f,%d",&x,&n);

    for(i=1;i<=n;i++){

        t1=t1+x;

        t2=t2/i;

        s=s+t1t2;

    }

    printf("s=%f\n",s);

    return 0;

}

2)原代码书写不规范,过不了编译;注意间隔,改一下就行。余无错。

3)问题同2)。余无错。

4)

#include "stdioh"

#include "stdlibh"

#include "timeh"

int main(void){

    int a[50],i;

    float av=0;//平均数一般不是整数

    srand((unsigned)time(NULL));//要加上这一句,不然随机数千篇一律

    for(i=0;i<50;i++){

        a[i]=rand()%90+10;//C的随机函数是rand

        av=av+a[i];

        printf("%4d",a[i]);

    }

    printf("\n");

    av=av/20;

    for(i=0;i<20;i++)

        if(a[i]<av)

    printf("%5d",a[i]);

    return 0;

}

你的代码书写很不规范,造成编译不过问题,比如chara[10]、#defineN 20等,间隔上哪去了?要注意一下。

第1个答案:1,2,3

1,2,5

第2个答案:是6 try()是C语言里面的关键字,最好不要用来当函数名

第3个答案:输出字符串(ps)的长度

第4个答案:y=876

第5个答案:9876

第6个答案:1

第7个答案:统计字符的个数

class Circle

{

double radius;

double diameter;

double area;

public Circle()

{

radius=1;

}

public double getRadius() {

return radius;

}

public void setRadius(double radius) {

thisradius = radius;

}

//下面这个方法用于计算机圆的直径

public double computeDiameter()

{

return 2radius;

}

public double computeArea()

{

return MathPIradiusradius;

}

}

public class TestCircle {

public static void main(String args[])

{

Circle c1=new Circle();

Circle c2=new Circle();

Circle c3=new Circle();

c2setRadius(5);

c3setRadius(10);

Systemoutprint("第一个圆的直径为:"+c1computeDiameter());

Systemoutprintln(" 面积为:"+c1computeArea());

Systemoutprint("第二个圆的直径为:"+c2computeDiameter());

Systemoutprintln(" 面积为:"+c2computeArea());

Systemoutprint("第三个圆的直径为:"+c3computeDiameter());

Systemoutprintln(" 面积为:"+c3computeArea());

}

}

一、填空题

1一个函数一般由两部分组成,它们分别是函数名和函数体。

2一个C语言的程序至少应包含一个主函数。

3函数体用{符号开始,用}符号结束。

4欲将一个16位二进制的整数变量的高8位清零,而只保留低8位,可用的方法是和0x00ff进行与运算。

5数组在内存中是一块连续的储存区,数组名代表首地址。

6函数直接或间接的自己调用自己,被称作函数的递归调用。

7函数在内部定义只在本函数内有效的变量叫内部变量,在函数以外定义的变量叫外部变量。

二、选择题

1下列变量中合法的是(没对的,A改成B_C_Tom就对,C改成_6a7b对)

A BCTom B3a6b C-6a7b D $ABC

2下面两对用户定义标识符哪个可读性最强(c)

A cheackquality B salarytotal C check-quality D sa-la-ry-tot-al

3设 int m=10,则下列表达式的值不等于0的有(D)

A m=10/110 B m==8 C ~m&m D ~(m|m)

4设 int x=25,则表达式 (x&20>>1)|(x>10|7&x^33)的值是(D)

A 35 B 43 C 42 D 41

5C语言中,逻辑“真”等价于(C)

A 大于0的数 B大于0的整数 C非0的数 D 非0的整数

6有段程序:int x=20; do{x/=2;}while(x--);请问此循环执行(A)次。

A 4 B 3 C 5 D不确定

7下面选项中,于if(a)等价的是(C)

A if(a==0) Bif(a!=0) Cif(a=0) D if(a==1)

8为判断字符串s1是否大于字符串s2,正确的语句是(C)

Aif(s1>s2) Bif(strlen (s1)>strlen(s2)) Cif(strcmp (s1,s2)>0) Dif (strcmp (s1,s2)==1)

以上就是关于汇编语言程序 题目请教 求高人解答!全部的内容,包括:汇编语言程序 题目请教 求高人解答!、汇编语言程序的一道题。求高手解答!!!、求解答一下C语言编程题,万分感谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9361720.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存