1. 首页 > 智能数码 >

汇编语言第四章程序结构答案(汇编语言程序设计教程第四版答案)

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

1)编程完成在一个源字符串中搜索子字符串的功能(要求使用串比较指令cmp进行各次搜索),并输出搜索结果。

汇编语言第四章程序结构答案(汇编语言程序设计教程第四版答案)汇编语言第四章程序结构答案(汇编语言程序设计教程第四版答案)


提示:例如,源串为:How are you?

子串为:are

(2)缓冲区BUFFER中存放有字符串,以00h为结束标志。编写程序,把字符串中的空格删除,后续字符依次前移。

(3)从键盘读入一个字符串(长度<80),然后将字符串以与输入相反的顺序显示出来。

(4)3..实验题

设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果通过调用显示子程序以16进制形式显示在在屏幕上。

要求:(1)编写主程序以及两个子程序(多个字数据相加的子程序和十六进制形式显示子程序),并将所有子程序和主程序存放在同一文件中进行汇编和连接,后得到运行结果;

(2)按多模块程序设计方法,将主程序、各子程序作为独立的源程序文件分别进行汇编,然后连接为一个可执行文件。后运行得到结果。

为了尽快得到答案,楼主应该一个、一个的提出问题。

让一个人编写五个程序,也太难为大家了。

《汇编语言程序设计》复习题答案求救,分析题!高分,谢谢!

41答案如下:

SI是源地址寄存器,DI是目的地址寄存器,就是以源地址寄存器[SI]开始的64H个字节里面的内容,到以[DI]为始址的空间中去。CX是计数器嘛,就是64H个字节的内容,MOVSB就是MOV 以 B为单位!

42答案如下:

DATA SEGMENT

A DW 0

B DW 0

C DW 15H,5H,50H

DATA ENDS

CODE SEGMENT

..

MOV BX,OFFSET C

MOV AX,[BX] ;这一步后,AX=[BX]=15H

MOV B,AX ;B=15H

MOV AX,2[BX] ;2[BX]的意思是[BX+2],所以AX=05H

ADD AX,B ;15H+05H=1AH

MOV A,AX ;后是1AH

六.程序填空

第一空 0FH

第二空 4AH.

这一题的基本思想就是把 BX 循环右移四位,取BL,赋给AL,与上0FH,把高四位清零,得低四位,再加上30H,判断是否超过A,因为A的ASCLL与0-9的ASCLL码不是连续的,所以要根据判断结果再加上07H,就这样了。

我原是汇编科代表呢!!哈哈

1,就是把DS:[SI]的一百个字节单元的内容传送到ES:[DI]开始的一百个字节单元中。

2,A=001AH

3,

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

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE

START:

PUSH DS

SUB AX,AX

MOV CH,4

ROTATE:

MOV CL,4

ROL BX,CL

MOV AL,BL

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL PRINTIT

ADD AL,7H

PRINTIT:

MOV DL,AL

MOV AH,2

INT 21H

DEC CH

JNZ ROTATE

POP DS

RET

MAIN ENDP

CODE ENDS

END START

我不懂。。。。。

不过你真的。。。。

MOV CX,64H

LEA SI,NAME1

LEA DI,NAME2

REP MOVSB

……

这段程序完成不就是重复执行将name1内存里面的内容放入name2中去呀,重复执行cx中指定的100次

下面的题目全是汇编语言相关的,你只要复习下课本,就可以做到了,题目不难

汇编语言程序设计_汇编语言程序设计第五版答案钱晓捷

一.

1.ADDBX,AX或ADDBL,AL;类型配对

2.MOVAX,0A999H

3.MOVAX,0F8H

4.MOVAX,1234H或MOVAL,12H

5.MOVAX,[BX]

6.MOVDS,AX;DS不能直接存立即数

7.ADD[BX],10;对

8.PUSHAX;push不能直接push立即数

9.INAL,DX

10.OUT40H,AL

11.MULAL;mul不能直接跟立即数

12.MOV[DI],AX;mov不能两个都是内存

13.ADDDI,AX

14.MOVDS,AX;CS不可以改

15.SUB10[SI],AX;sidi不可以同时出现

二.

SUB[BP],BX寄存器间接寻址方式;30400H;

MOV[BXDI],SI基址变址寻址方式;10400H;

ADDES:[SI],DI寄存器相对寻址方式;20200H;

MOV10[BX],DI寄存器相对寻址方式;10100H;

MOVDS:[100H],BX相对基址变址寻址方式;10100H

三.

3456H;5678H;1234H;5678H;

四.

1234H;2468H;0008H;1008H;0804H;0408H;0508H;0508H

五.

01H,31H,0FFH,00H,78H,56H,FFH,FFH,00H,24H,00H,0BH,00H,0BH,19H,09H,09H

(从左往右地址变大)

AX=3101H,BX=0023H

六.

1.

汇编语言:()是面向机器的程序设计语言。

汇编:把汇编语言翻译成机器语言的过程称为汇编。

汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。

2.

3.

单独cmp就是逐一比较8个位;加上rep,循环比较,还是比较这8位啊

4.

是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

5.

宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:

1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;

2、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;

3、宏引用时,参数是通过“实参”替换“形参”的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;

4、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。

总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。

七.

汇编试题解答

1.设(DS)=2000H, (ES)=3000H, (SS)=4000H, (BX)=1000H, (BP)=1000H, (SI)=0001H, (DI)=0002H, (21000H)=1234H, (21002H)=5678H, (31000H)=9ABCH, (31002H)=0DEF0H, (41000H)=3456H, (41002H)=789AH, 计算下列各指令中源操作数的物理地址,并指出指令执行后AX寄存器的内容。

MOV AX, ES:[1000H] 物理地址 31000H (AX)=9ABCH

MOV AX, [BX] 物理地址 21000H (AX)=1234H

MOV AX,[BP+DI] 物理地址 21002H (AX)=5678H

MOV AX, [BX][SI] 物理地址 21001H (AX)=7812H

6.在下列程序段括号中,填入正确的答案。

DATA SEGMENT

BUF DB 12H,56H

DATA ENDS

7.指出下列指令错误原因,填入括号中。

A. MOV AX,BL ;源操作数与目标操作数长度不同

B. MOV CS,AX ;CS寄存器不能作为目标操作数

C. DEC GAMA[BX] ;必须显示指明目标操作数的长度(使用BYTE PTR、WORD PTR等修饰符)

D. MOV ES,5600H ;以段寄存器作为MOV指令的目标操作数时,源操作数不能是立即数

E. SUB AX,DS ;段寄存器不可作为运算类指令的源操作数

8.下列语句在存贮器中分别为变量分配多少字节?请填入括号中。

VR1 DW ? ;2字节

VR2 DW 4 DUP(?),2;10字节

CONT EQU 10 ;此为伪指令,CONT只是作为汇编阶段中表示数值10的标号,不是变量,因此不实际分配内存

9.设BX=1200H,SI=0002H,DS=3000H,(31200H)=50H,(31201H)=02H,(31202H)=OF7H,(31203H)=90H请写出下列各条指令单独执行后,有关寄存器及存储单元的内容,若该指令影响标志位,则指出其值。

A. DEC BYTE PTR〔1200H〕 ; 问:(31200)=4FH, CF=原来CF的值(DEC指令不影响CF标志)

B. SAR BYTE PTR [SI+1200H],1 ; 问:(31202H)=FBH,ZF=0

C. MOV AX,WORD PTR〔BX+SI〕 ;问:AX=90F7H,SF=原来SF的值(MOV指令不影响标志位)

2.每组写一条程序指令,使: (6分)

A. BX寄存器的低四位置1 OR BX,000FH 或者 OR BL,0FH

B. AX寄存器的低四位清0 AND AX,0FFF0H 或者 AND AL,0F0H

C. 用TEST指令测试DL寄存器的第3位和第6位是否同时为0。 TEST DL,01001000b(若结果ZF=0表示两者同时为0)

3.在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如: (4分)

;保护现场

PUSH AX

PUSH BX

PUSH CX

PUSH DX

;恢复现场

┇┇

┇试写出恢复现场时的指令序列。

POP DX

POP CX

POP BX

POP AX

1.对于下面的数据定义,各条MOV的指令单独执行后,有关寄存器的内容是什么?(5分)

FLDB DB ?

TAB1 DW 20 DUP(?)

TAB2 DB ‘ABCD’

(A) MOV AX,TYPE FLDB AX=1

(B) MOV AX,TYPE TAB1 AX=2

(C) MOV CX,LENGTH TAB1 CX=20

(D) MOV DX,SIZE TAB1 DX=40

(E) MOV CX,LENGTH TAB2 CX=1

下面程序段执行完后,AL的内容是什么? (5分)

MOV AL,10

ADD AL,AL

SHL AL,1

MOV BL,AL

SHL AL,1

ADD AL,BL

结果AL=0C0H

3试问下面的程序段完成的功能是什么? (5分)

SAL AX,1

RCL DX,1

5.已知程序段:

STRING DB ‘ABCDEFGHIJ’

┇MOV AH,01 ;从键盘输入字符1~9

INT 21H

AND AL,0FH

DEC AL

XOR AH,AH

MOV BX,OFFSET STRING

ADD BX,AX

MOV DL,[BX]

MOV AH,02H ;显示输出

INT 21H

┇如果你还有什么不懂的,可以百度搜下:编程回忆录,他们现在正在录制这方面的教程,都是零基础开始,由浅入深。

单模块汇编语言源程序的结构。

【答案】:DATA SEGMENT ;定义数据段

<数据定义伪指令序列>

DATA ENDS

STACK SEGMENT STACK ;定义堆栈段

<数据定义伪指令序列>

STACK ENDS

CODE SEGMENT ;定义代码段

<程序段>

CODE ENDS

END 标号

[注意]综合上述,用汇编语言编写的源程序,在结构上具有以下特点:

①由若干逻辑段组成,各逻辑段包含伪指令语句定义和说明。

②整个源程序以伪指令END结束。

③每个逻辑段由语句序列组成,各语句可以是指令语句、伪指令语句、宏指令语句、注释语句或空行语句。

汇编程序题目,求详解。

嘿嘿 没人给你解答 俺来帮你做吧

解题分析如下:

1 START:MOV AX,01H

MOV BX,02H

MOV CX,02H

MOV DX,02H

为循环开始即初始化阶段 是4条传送指令 传送到结果是:

AX=01H BX=02H CX=02H DX=02H

其中CX为下一步循环的循环计数器 CX=02H 即表示要循环2次

2 第一次循环 执行一次下面的程序段

NXET: INC AX ;加1指令 AX=01H+1=02H

ADD BX,AX ;加法指令 BX=BX+AX=02H+02H=04H

SHR DX,1 ;算术右移指令 位补0 结果为DX=01H

LOOP NEXT ;循环次数减1 CX=02H-1=01H

第二次循环 再执行一次下面的程序段

NXET: INC AX ;加1指令 AX=02H+1=03H

ADD BX,AX ;加法指令 BX=BX+AX=04H+03H=07H

SHR DX,1 ;算术右移指令 位补0 结果为DX=00H

LOOP NEXT ;循环次数减1 CX=01H-1=00H

可知结果:

AX=03H BX=07H DX=00H CX=00H

呵呵 做完也没加分呀 满意后 就选择满意回答吧

在单片机中有关汇编语言的问题!求详细的答案即:说明各条语句的作用,还有就是此程序实现的是什么功能

就是对两位压缩BCD码进行调整

比如r1 = 17h

a = 28h

add a,r1 显然 a=3fh

但是 这不是我们想要的结果,因为我们用一个字节表示的是压缩的BCD码,而bcd码根据8421的标准码是么有f这个数字的,虽然里面存的数据是17h和28h

但是我们把他看成是bcd码,也就是说用4位数字表示一个数,17h+28h=45h

我们希望得到的是这个结果,所以有了da a这是根据cy ac进位做出的自动调整指令,有关详细情况可以用数学方法解释,楼主有兴趣可以直接研究一下。

总之,调整以后原来的3fh变成了45h

请参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息