建材秒知道
登录
建材号 > 设计 > 正文

有朋友会这道编程题吗,用汇编语言啊。。跪求答案啊。。。设在数据段中以BLOCK为首地址的存储区域中存...

美满的煎蛋
要减肥的毛豆
2023-01-25 22:48:59

有朋友会这道编程题吗,用汇编语言啊。。跪求答案啊。。。设在数据段中以BLOCK为首地址的存储区域中存...

最佳答案
有魅力的衬衫
内向的老师
2026-05-04 06:16:48

data segment

blockdb 16 dup(?)

averagedb 0

data ends

code segment

start:mov ax,data

mov ds,ax

xor ax,ax

lea si,block

mov cx,16

_Add: mov bl,[si]

add al,bl

adc ah,0

inc si

loop_Add

div ax,16

mov average,al

mov ax,4c00h

int 21h

code ends

end start

最新回答
安详的向日葵
美丽的吐司
2026-05-04 06:16:48

-------------------------------------

DATA1 SEGMENT

NUM DB 100, 79, 20, 78, 89, 95, 76, 40, 88 最多99个成绩

DB 80, 98, 40, 0, 100, 83, 92, 49

NN EQU $ - NUM

MSG1 DB ' 0 ~ 59 : $'

MSG2 DB '60 ~ 89 : $'

MSG3 DB '90 ~100 : $'

CRLF DB 13, 10, '$'

N1 DB 0

N2 DB 0

N3 DB 0

DATA1 ENDS

-------------------------------------

CODE SEGMENT PARA PUBLIC

ASSUME CS:CODE, DS:DATA1

START:

MOV AX, DATA1

MOV DS, AX

LEA SI, NUM

MOV CX, NN

LP:

MOV AL, [SI]

CMP AL, 60

JBN1_JY

CMP AL, 90

JBN2_JY

INC N3

JMP NEXT

N1_JY:

INC N1

JMP NEXT

N2_JY:

INC N2

NEXT:

INC SI

LOOP LP

LEA DX, MSG1

MOV AH, 9

INT 21H

MOV AL, N1

CALL HEX_ASC

LEA DX, MSG2

MOV AH, 9

INT 21H

MOV AL, N2

CALL HEX_ASC

LEA DX, MSG3

MOV AH, 9

INT 21H

MOV AL, N3

CALL HEX_ASC

EXIT:

MOV AH, 4CH

INT 21H

====================================

HEX_ASC PROC NEAR

MOV AH, 0

MOV BL, 100

DIV BL

MOV DL, AL

ADD DL, '0'

CALL OUT_DL

MOV AL, AH

MOV AH, 0

MOV BL, 10

DIV BL

MOV DL, AL

ADD DL, '0'

CALL OUT_DL

MOV DL, AH

ADD DL, '0'

CALL OUT_DL

LEA DX, CRLF

MOV AH, 9

INT 21H

RET

HEX_ASC ENDP

====================================

OUT_DL PROC

PUSH AX

MOV AH, 2

INT 21H

POP AX

RET

OUT_DL ENDP

====================================

CODE ENDS

-------------------------------------

END START

大胆的电话
虚拟的金毛
2026-05-04 06:16:48
第一章

6.PentiumIV /1.7G/80G/16XDVD/256M/19’’液晶/56KMODEM

WINDOS2000

第二章

1.(101010.01)2=(42.25)10 =(2A.4)BCD

2.(37.2)8=(31.25)10=(1F.4)(AC.E)

3..(AC.E)16=(172。875)10

4.(75。34)10=(1001011.0)2=(113.125)8=(8E.06)16

5.两种做法:1.先将十进制数转换成二进制数再计算

2.先计算,结果再转换成二进制数。结果为0.0001101

6.(1)原码为00000000补码为00000000

(2)原码为10000000补码为00000000

(3)原码为0.1010000补码为0.1010000

(4)原码为1.1010000补码为1.0110000

(5)原码为00001010补码为00001010

(6)原码为10001010补码为11110110

7.X原=0.1010 X=+0.1010

8.X原=1.0110 X=-0.0110

9.(1)0.000…01

(2)0.11…11

(3)1.00…01

(

4)1.11…11

10.(1)0.00….01

(2)0.11…11

(3)1.11…11

(4)1.00…01

11.参照教材37页的表格公式,注意阶码部分连同阶符的位数以及尾数连同符号的位数

12.参照教材37—38页,

13.使用隐地址

14.采用寄存器寻址

15.(1)1200H

(2)1002H

(3)1200H 1200H

(4)F03H

第三章

3.(1)正溢 01,100000

(2)无 00,111111

(3)无11,100000

(4)负溢 10,100000

4.[X]补—[Y]补=[X]补+[Y]补+1

无 00,000110

(1) 正溢01,100000

(2) 无 11,101111

(3) 无 00,110011

5. 11,00;11,110011

6.(1)0110101

(2)11000011

(3)01011010

7.(1)0011;1000

(2)0011;1001

(3)1010;0000

12.以下所有题的取指过程都是一样的

FT0 PC → MAR

FT1 M → MDR→IR ,PC+1→ PC

(2)FT0:PC→MAR

FT1:M → MDR →IR,PC+1 → PC

ST0:PC → MAR ,PC+1→ PC

ST1:M→ MDR → C

ET0:C → R1

(5)FT0:PC →MAR

FT1:M → MDR → IR,PC+1 → PC

ST0:PC → MAR

ST1:M →MDR → C,PC+1→ PC

DT0:R0→ MAR

ET0:C →MDR

ET1:MDR → M

其余小题参照97—101页的内容,寻址方式不同,各个执行周期也不相同。

13.(2)FT0:PC → MAR

FT1:M→ MDR → IR ,PC+1 → PC

ST0:PC → MAR

ST1:M→ MDR →C,PC+1 → PC

DT0:R1 → MAR

DT1:M→ MDR →D

DT2:R1+1 → Z

DT3:Z → R1

14.(3)FT0:PC →MAR

FT1:M → MDR → IR,PC+1 → PC

ET0:PC →MAR

ET1:M →MDR → D

ET2:D+PC → Z

ET3:Z →PC

第四章

3.该题进行计算时采用变形补码比较方便,可以顺便判断OF位。此题可以上机验证。

4.画图时存储器中地址从上到下是按由低向高排列

002B0H→53H

002B1H→2CH

002B2H→

002B3N→OEH

002B4H→1FH

7.(1)0007H

(2)3400H

8.0562H

9.物理地址1E2C:0062 SP的初始值为64H SP的初始值指向的物理地址是1E324H

10.(SP)=3CH

11.(SP)=5EH

13.(1)对(2)对(3)错 (4)对 (5)错 (6)对 (7)对 (8)错 (9)错

(10)错 (11)对 (12)对

分析错误的原因

14.CF=1 AF=1 ZF=0 SF=0 OF=0 (AL)=15H

15.(1)(CL)=(09226H)=F6H

(2)(1E4F6)=5678H

(3)(BX)=0056H、(AX)=1E40H

(4)(SI)=00F6H、(DS)=1E40H、(1E4F6)=0024H

(5)(0026H)=5678H、(CX)=00F6H、(09226H)=1234H、(AX)=5678H

6.MOV AX,[02C0]

MOV AX,0020H[SI]

MOV AX,[BP]

MOV AX,80H[DI][BX]

试试看,你还能写出几种。

17.(SI)=12484H、(AX)=6156H

18.(AX)=81C6H 、CF=1

19.(AX)=F8E0H、CF=1

20.(AX)=1236H、(BX)=0001H

21.(AX)=0001H

22.(BX)=0012H、ZF=0、CF=1

23.(AX)=FBABH

24.(AX)=0000H、CF=0

25.(AH)=0001H、(AL)=0101H 、CF=1

26.(SI)=0102H、(AL)=A5H

28.(1)program1:

LAFH

OR AH,80H

SAHF

Program2:

PUSHF

POP AX

AND AX,立即数

PUSH AX

POPF

(2)program1:

MOV CL,04H

ROL AL,CL

Program2:

MOV CL,04H

ROR AL,CL

(3)MOV SI,A

MOV BX,B

LEA AX[SI][BX]

(4)MOV CL,2

SHR AX,CL

MOV BX,DX

AND BX,0003H

MOV CL,OEH

SHL BX,CL

OR AX,BX

MOV CL,2

SHR DX,CL

(5)OR CX,0001

(6)XOR AX,OAH

(7)NOT AX

XOR BX,AX

第五章

1.(1)错(2)对(3)错(4)错(5)错(6)对(7)错(8)错

2.(1)(5)(6)(7)(8)(9)

3.(AL)=3, (Bx)=33H

4.(AX)=1234H, (BX)=34H

5.(SI)=7812H, (DS)=0CD56H

6.SI,S2的偏移量分别为30H,38H。CONT的值为8,S2+5字节单元的内容为43H

7.00H, FFFFH, FFH

8.0000H, 5550H

9.00AAH, FFFEH, FF54H用补码表示

10.前两问的答案

DX:008H,0007H,0006H, 0006H, 0005H, 0004H, 0000H共六个

AX:4567D, 456D, 45D,4D, 0000D, 注意进制

11.(AX)=56D4H, (BX)=ADA8H, CF=0

12.01H, D1H,C1H

13.‘A’‘B’‘C’‘D’‘E’‘F’‘G’‘H’‘I

14.0014H, 0007H

15.PUSH AX

POP DX

16.ORG 0020H

17.参照教材156页

18.第一个不同字符的位置,5。

19.地址由低到高依次为:00H,02H,04H,06H,08H。0AH,0CH,0EH ,10H…

20.(1)INC DX

(2)DEC DX

21.5, 24H

22.6, 1CH

23.0308H,0008H,000CH

24.(1)XOR AH,AL

(2)JE ZERO

25.ADD AH,1

ADC AX,1

31.(1)计算AL中的十进制数的二进制表示

(2)24H

32.(1)是0——9的数字或大写字母00——2F,

(2)输入为‘*’

迷人的玉米
傻傻的诺言
2026-05-04 06:16:48
3)MOV CH,TABL3+2 CH=(0CH)

4)MOV DL,ARRAY DL=(41H)

5)MOV DH,COUNT DH=(4)

第四章

4.1写出完成下述功能的程序段:

1)将32H存入CH中.

MOV CH,32H

2)将CH中的内容与2AH相加.

ADD CH,2AH

3)将CH中的内容乘2

ADD CH,CH (练习册上的答案为:SHL CH,1)

4)将CH中的内容存入以BX作为相对基址寻址的数组变量NUM的第10个字节单元中(数据段)

MOV BX,9

MOV NUM[BX],CH

4.2写出完成下述功能的程序段:

1)在数据段中,字变量DARA1有两个数据:1C35H和0214H,字变量DARA2有两个数据:0A678和81A4H,字变量DARA3为二个空单元.

作者: 218.27.73.* 2005-9-3 09:21 回复此发言

--------------------------------------------------------------------------------

4 汇编语言程序设计课后习题答案

DATA SEGMENT

DARA1 DW 1C35H,0214H

DARA2 DW 0A678,81A4H

DARA3 DW 2 DUP (?)

DATA ENDS

2)将DATA1的第一个字数据传送给AX.

MOV AX,DATA1

3)将AX的内容与FARA2的第一个字数据相减

SUB AX,FARA2

4)将AX中的结果存入DATA3的第一个空单元.

MOV DATA3,AX

5)将DATA1的第二个字数据传送给AX.

MOV AX,DATA1+2

6)将AX的内容与SARA2的第二个数据及第一次相减速的借位相减

SBB AX,SARA2+2

7)将AX的结果存入DATA3的第二个单元中

4.3在A1和A2的字单元中各有一个带符号数字数据,试求出A1和A2组成的双字长数的绝对值,存入B1和B2的字单元中,画出程序流程图和编写职程

序段,包括伪指令和指令序列.

DATA SEGMENT

A1 DW n1

A2 DW n2

B1 DW ?

B2 DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

MOV AX,DATA

MOV DS,AX

CMP WORD PTR A2,7FFFH

JNL CODE1

NEG WORD PTR A2

NEG WORD PTR A1

CODE1: MOV AX,A1

MOV DX,A2

MOV B1,AX

MOV B2,DX

MOV AH,00H

INT 21H

CODE ENDS

END

4.4将存放在字节变量BCD1中的两个十进制数的ASCII码合并为一字节压缩的BCD码,存入BCD2中,试编写程序段

DATA SEGMENT

BCD1 DB 37H,38H

BCD2 DB ?

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START: MOV AX,DATA

MOV DS,AX

MOV AL,BCD1+1

AND AL,0FH

MOV BL,BCD1

MOV CL,4

SHL BL,CL

OR AL,BL

MOV BCD2,AL

CODE ENDS

END START

4.5分别编写出下列各算式的程序段,其中X、Y、Z、R和W均为存放16位无符号数的单元符号地址:

DATA SEGMENT

X DW 3031H

Y DW 3032H

Z DW 3033H

R DW 3034H

W DW 3035H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

1)Z<---W+(z-x)

MOV AX,Z

SUB AX,X

ADD AX,W

MOV Z,AX

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

2)Z<---(W*X)/(Y+6),R<---余数

MOV AX,W

MUL X

MOV BX,Y

ADD BX,6

DIV BX

MOV Z,AX

MOV R,DX

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

3)Z<---W-(X+6)-(R-9)

MOV AX,R

SUB AX,9

MOV BX,X

ADD BX,6

MOV CX,W

SUB CX,BX

SUB CX,AX

MOV Z,CX

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

4)Z<---((W-X)/5×Y)×2,余数丢弃

MOV AX,W

SUB AX,X

DIV 5

MOV AH,00H

MUL Y

MUL 2

MOV Z,AX

MOV R,DX 计算结果如果是双字节,将高16位存入Z字单元后面的一个字位中。

DTATA ENDS

END START

5.1分支程序可分为哪些功能部分?用流程图的形式来表示各种分支程序的功能组成部分?双分支条件是怎么样才能产生?多分支条件是怎么样形成的?各种分支程序判断条件的方法有什么不同?实现分支的方法有什么不同?

分支程序可分为:产生条件、测试、定向、标号。流程图见教材P119图5-4。用能够影响CF、ZF、OF的指令来产生条件,如CMP,SUM,AND,TEST,位移指令。(其余答案略,书上都有)

5.2试分析下列程序段,说明完成了什么操作?程序执行前后,HEXNUM字节单元的内容是什么?

ASCNUM DB 41H

HEXNUM DB ?

MOV AH,ASCNUM

CMP AH,39H

JBE NEXT

SUB AH,7

NEXT: SUB AH,30H

MOV HEXNUM,AX

HLT

完成了当ASCNUM所表示的十六进制数的ASCII码转换成十六进制数,并存入ASCNUM字节单元的低四位,执行前是空单元,执行后是0A。

5.3试编写完成题5.3图的流程图所规定的操作

P1: MOV AX,-1

JMP P4

P2: MOV AX,0

JMP P4

P3: MOV AX,1

JMP P4

CMP AX,-1

JLE P1

JL P2

JMP P3

p4: MOV AL,00H

INT 21

5.4测试ALPHA字节变量单元中的ASCII码字符,进行如下操作:

1)若为数字字符,送入NUM字节单元中,置标记FLAG为0

2)若为大写字母字符,送入BIGCHR字节单元中,置标记FLAG为0

3)若为小写字母字符,送入SMLCHR字节单元中,置标记FLAG为0

作者: 218.27.73.* 2005-9-3 09:21 回复此发言

--------------------------------------------------------------------------------

5 汇编语言程序设计课后习题答案

4)否则,置标记FLAG为1

DATA SEGMENT

ALPHA DB "A"

NUM DB ?

BIGCHR DB ?

SMLCHR DB ?

FLAG DB ?

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START: MOV AX,DATA

MOV DS,AX

MOV AX,ALPHA

CMP AX,30H

JBE N4

CMP AX,39H

JA N1

MOV NUM,AX

JMP N5

N1: CMP AX,41H

JB N4

CMP AX,5A

JA N2

MOV BIGCHR,AX

JMP N5

N2: CMP AX,61H

JB N4

CMP AX,7a

JA N4

MOV SMLCHR,AX

JMP N5

N4: MOV FLAG,1

JMP N3

N5: MOV FLAG,0

N3: MOV AX,00H

INT 21

CODE ENDS

END START

5.5设在变量单元A、B和C中存放有三个数,若三个数都不为0,则求出三个救之和存入D;若有一个为0,则将其它两个单元也清零,请编写此程

序段。

DATA SEGMENT

A DB 10

B DB 20

C DB 30

D DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

CMP A,0

JZ P1

CMP B,0

JZ P1

CMP C,O

JZ P1

MOV AL,0

ADD AL,A

ADD AL,B

ADD AL,C

MOV D,AL

JMP P2

P1: MOV A,0

MOV B,0

MOV C,0

P2: MOV AH,0

INT 21H

CODE ENDS

END START

5.6假设X和X+2单元与Y和Y+2单元中存放的是两个双字有符号数据(X、Y为低位字)。说明下列程序段所完成的是什么操作?若JBE L2指令

改为JB L2指令,在操作结果上有什么区别?AX=1和 AX=2分别说明了什么?

MOV DX,X+2

MOV AX,X

ADD AX,X

ADC DX,X+2

CMP DX,Y+2

JL L2

JG L1

CMP AX,Y

JBE L2

L1: MOV AX,1

JMP EXIT

L3: MOV AX,2

EXIT: HLT

将X的双字单元中的数乘2后与Y的双字单元中的数进行比较。如果X小于等于Y,将2写入AX中;如果X大于Y,将1写入AX。

如果装JBE L2指令改为JB L2,侧是X等于Y时,将1写入AX。其余同上。

5.7试编写一段程序,要求比较数组ARRAY中的三个16位有符号数。根据比较结果,置FLAG标志:

1)如果三个数都不相等,则置FLAG为零。

2)如果三个数有两个相等,则FLAG为1。

3)如果三个数全相等,则FLAG为2。

DATA SEGMENT

ARRAY DW 1000H,2000H,3000H

FLAG DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AX,ARRAY

MOV BX,ARRAY+2

MOV CX,ARRAY+4

MOV DL,0

CMP AX,BX

JNZ N1

INC DL

N1: CMP BX,CX

JNZ N2

INC DL

CMP DL,2

JZ N5

N2: CMP AX,CX

JNZ N3

INC DL

JMP N5

N3: CMP DL,1

JNZ N4

JMP N5

N4: MOV DL,0

JMP N6

N5: MOV FLAG,DL

N6: MOV AH,00H

INT 21H

CODE ENDS

END START

6.1 循环参数置初值部分,循环工作部分和循环控制部分。(这种题我不太会做,大家上书上找吧。)

6.2

1)将从2开始的连续10个偶数相加,将和存入SUM。SUM=110

2)将DAT1的后五个单元的数5,6,7,8,9依次送入DAT2的5个单元中去。DAT2的内容是5,6,7,8,9

6.3

1)

LEAAX,BUF1

LEABX,BUF2

MOVCX,N

LOP1: MOVAL,[AX]

MOV[BX],AL

INCAX

INCBX

LOOP LOP1

2)

LEA SI,BUF1

LEA DI,BUF2

MOV CX,N

CLD

REP MOVSB

3)

LEA SI,BUF1

LEA DIBUF2

MOV CX,N

CLD

LP: LODSB

STOSB

LOOP LP

6。4

LEA BX,NUMBER

LEA SI,PLUS

MOV CX,256

LP: MOV AL,[BX]

INC BX

AND AL,AL

JNS L1

LOOP LP

JMP L2

L1: MOV [SI],AL

INC SI

LOOP LP

L2: HLT

6.5

DATA SEGMENT

GARDE DB a1,a2,a3,...a100

A90DB 0

A80DB 0

A70DB 0

A60DB 0

A0 DB 0

DATA EDNS

CODE SEGMENT

作者: 218.27.73.* 2005-9-3 09:21 回复此发言

--------------------------------------------------------------------------------

6 汇编语言程序设计课后习题答案

ASSUMECS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BX,AX

MOV CX,100

LOP1: CMP [BX],60

JB P1

CMP [BX],70

JB P2

CMP [BX],80

JB P3

CMP [BX],90

JB P4

JMP P5

B1:BX+1

LOOP LOP1

P1:INC A0

JMP B1

P2:INC A60

JMP B1

P3:INC A70

JMP B1

P4:INC A80

JMP B1

P5:INC A90

JMP B1

CODE ENNS

END START

6.6

1) MOV FLAG,FFH

LEA AX,DATA1

LEA BX,DATA2

MOV CX,N

P0:CMP [AX],[BX]

JNZ P1

INC AX

INC BX

LOOP P0

JMP P2

P1:MOV FLAG,0

MOV DATA1,AX

MOV DATA2,BX

P2:HLT

2) ASSUME CS:CODE,DS:DATA,ES:DATA 设DATA为数据段地址

MOV AX,DATA

MOV DS,AX

MOV ES,AX

LEA SI,DATA1

LEA DI,DATA2

MOV CX,N

CLD

REPE CMPSB

JNZ P1

MOV FLAG,0FFH

JMP P2

P1:MOV FLAG,0

MOV DATA1,[SI] ;参考书有在前面有两句DEC SI,DEC DI不知道是什么意思

MOV DATA2,[DI]

p2:HLT

6.7LEA AX,BUFFER1

ADD AX,N

DEC AX

LEA BX,BUFFER2

MOV CX,N

LOP1: MOV DX,[AX]

MOV [BX],DX

DEC AX

INC BX

LOOP LOP17.1

主程序与子程序之间传递数据必须经过中间媒体,如CPU中的寄存器,肉存中的堆栈或工作单元来进行。分别对应一种传递方法。

寄存器存储数据小,但速度快。

堆栈后进先出,选进后出,有数量限制。多用于现场保护。存储单元有最大限度的自由度。

7.2时间延迟程序,为了等待一段时间。

7.3

把以DEST首地址的连续100个字节单元中的数据移到以SOURCE为首地址的连续100个字节单元中。(CALL会将CS,IP入栈,版主,CS也会入栈吗?这是不是因为是段外转移的原因呀)

后面的两道大题考试时出的可能性很小,由于时间原因,我暂时就不做了

第二章课后习题及答案 (2003-7-2 16:38:00)

--------------------------------------------------------------------------------

2.1 (1) MOV CX,[BX][SI]

(2) ADD AX,value[BX]

(3)? CMP 0B6H,NUM

(4) TEST [COUNT+BP+DI],80H

(5) ROL AH,4或 ROR AH,4

(6) XOR [SI],[SI]

2.2 (1)----C

(2)----A

(3)----B

(4)----E

(5)----D

2.3 (1) AX=1200H

(2) AX=647AH

(3) (10050H)=7DH,(10051H)=0B7H

ZF=0,SF=1,CF=0,OF=0

(4) (12AD0H)=0F7H,CF=0,OF=0

(5) (12BD0H)=31H,CH=31H

2.4 (1)MOV AX,CL 字与字节混用。

(2)MOV CS,AX CS控制程序区,不可放数据。

(3)INC BETA[BP] 对存储器操作数,须指明是字或字节。

(4)MOV ES,1850H立即数不能送段寄存器。

(5)ADD BX,DS对ADD指令,段寄存器不可作SRC或DST.

(6)AND AX,[CX]?????

后面的题目,我不知道出题者是什么意思,看不懂。麻烦楼主公布一下答案。谢谢!

2.7可以用MOV CX,BLOCK+10

2.10这段程序执行一下,肯定跑飞。

作者: 218.27.73.* 2005-9-3 09:21 回复此发言

--------------------------------------------------------------------------------

7 回复:汇编语言程序设计课后习题答案

XIEXIE

I LOVE YOU