汇编课堂练习 修改版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

z

课堂练习题

8.利用变址寄存器,编一个程序,把自1000H单元开始的100个字节数据传送到自1070H开始的存储区中。

9.编一个程序,把自1000H单元开始的100个字节数据传送到自1050H开始的存储区中(注意:数据区有重叠)。

10.存储器A000H开始有100个带符号的字数组,要求从数组中分离出两个数组,P(J)包含所有正数,N(K)包含所有负数,将正数数组存放在首地址B000H开始处,将负数数组存放在首地址C000H开始处。

11.从0100H和010A单元开始,存放两个分别为10个字节的BCD数(地址最低处存放的是最低字节),求它们的和并且存放在0114H开始的存储单元中。

12.从0200H单元开始有100个数,编程序检查,若是正数保持不变,负数则取补后送回。

13.自STRING单元开始存放一个字符串(以$结尾);编程序统计这个字符串的长度(不包括$);把字符串的长度放在STRING 单元,把整个字符串下移两个单元。14.自STRI1单元开始存放一个字符串(前两个字节为字符串长度),给每个字符配上偶检验位并送回原处,编程序。

解8:利用变址寄存器,编一个程序,把自1000H单元开始的100个字节数据传送到自1070H开始的存储区中。

程序段如下:

LEA SI,1000H

LEA DI,1070H

MOV CX,100

CLD

REP MOVSB

解9.编一个程序,把自1000H单元开始的100个字节数据传送到自1050H开始的存储区中(注意:数据区有重叠)。

解:程序段如下;

MOV BX,1000H

LEA SI,[100+BX]

MOV BX,1050H

LEA DI,[100+BX]

MOV CX,100

STD

REP MOVSB

解10.存储器A000H开始有100个带符号的字数组,要求从数组中分离出两个数组,

P(J)包含所有正数,N(K)包含所有负数,将正数数组存放在首地址B000H开始处,将负数数组存放在首地址C000H开始处。

解.将正、负数分离的程序段:

MOV CX,64H

MOV BX,0A000H

MOV SI,0B000H

MOV DI,0C000H

AGAIN:MOV AX,[BX]

CMP AX,0H

JGE POSTV

NEGTV:MOV [DI],AX

INC DI

INC DI

JMP NXT

POSTV:MOV [SI],AX

INC SI

INC SI

NXT:DEC CX

JNZ AGAIN

HLT

解11.从0100H和010A单元开始,存放两个分别为10个字节的BCD数(地址最低处存放的是最低字节),求它们的和并且存放在0114H开始的存储单元中。

解.求两个分别为10个字节的BCD数之和程序段:

LEA SI,0100H

LEA DI,0114H

CLC

MOV CL,10

HE:MOV AL,[SI]

MOV BL,0AH[SI]

ADC AL,BL

DAA

MOV [DI],AL

INC SI

INC DI

DEC CL

JNZ HE

解12. 从0200H单元开始有100个数,编程序检查,若是正数保持不变,若为负数,则将相应单元的内容取补后送回。

解:

LEA BX,0200H

MOV CL,100

CHECK:MOV AL,[BX]

AND AL,AL

JS MINUS

INC BX

JMP LOP

MINUS:NEG AL

MOV [BX],AL

INC BX

LOP:LOOP CHECK

EXIT:

解13.自STRING单元开始存放一个字符串(以$结尾);编程序统计这个字符串的长度(不包括$);把字符串的长度放在STRING 单元,把整个字符串下移两个单元。

解:程序如下:

LEA SI,STRING

MOV CX,0

NEXT0:MOV AL,[SI]

CMP AL,‘$’

JZ EXIT0

INC CX

INC SI

JMP NEXT0

MOV DX,CX

NEXT1:MOV SI,STRING[CX]

MOV AL,[SI]

MOV 2[SI],AL

DEC SI

LEA DI,STRING+2[SI]

LOOP NEXT1

MOV STRING,DX

解14.自STRI1单元开始存放一个字符串(前两个字节为字符串长度),给每个字符配上偶检验位并送回原处,编程序。

解:程序段如下:

MOV CX,STRII

LEA BX,STRII+2

LOP:MOV AL,[BX]

AND AL,AL

JP EVEN ;PF=1,偶数个1,转EVEN

OR AL,80H ;PF=0,奇数个1,将最高位置1(偶检验)

EVEN:MOV [BX],AL

LOOP LOP

EXIT:

《汇编语言程序设计》课堂练习

一、填空题

1、80X86实模式下处理器地址总线为____20_______位,这也决定了其寻址的最大内存为

______1M____节。

2、8086处理器的工作寄存器分为______数据______,_________段___,_____控制_______和

____指针及变址______四类。

3、循环指令的三种形式为___LOOP_________,___LOOPZ_________和____LOOPNZ_______。

4、指令MOV AX,HIGH 1280H指令执行后AX=__12H_________。(high是指取高位字节)

5、循环程序结构可由三部分组成,分别为_____循环初始状态_________,_循环体___________

和_____循环控制条件_______。

6、过程调用CALL SUBS的属性是由_____汇编程序______________决定的。

7、同一模块内,调用程序与子程序间的变量传送方式有___通过寄存器传送参数____,____通

过地址表传送参数___,_______通过堆栈传送_____,___直接访问变量___________。

8、I/O设备与CPU之间数据送的方式包括__程序直接控制输入输出方式__,_____中断传送方

___和____DMA____________。

9、当键盘中断发生时,CPU能否响应,受两个条件的控制,一是____IF=1___________,二是

_____现行指令执行完_________。

10、文本方式下,显示屏上的每个字符在存储器中用___连续的两个________字节表示,保存字

符的_______________ACII码和字符的属性_____________。

11、在彩色图形方式中,屏幕上的一点在存储器中是用___________个BIT保存的。

12、如果一个程序是由多个模块组成的,应该通过__LINK__把它们连接在一起。

13、是一个____输入输出设备处理程序______,它提供了__DOS到ROM BIOS

的低级__接口,完成将数据从____外设读入内存______,或把数据从___内存写到外设去_______________。

14、ORG 1000H

X DB 12H

Y DW X+$-1001H

Z DD Y

(DS)=1234H,(BX)=1000H,(SI)=0002H

求下列指令执行完后指定寄存器的值。

MOV AX,[Y+1];(AX)=_________1200H_________。

LDS SI,Z;(SI)= ____0012__H ,(DS)=__0000__ H。(低字节给SI,高字节给DS)JMP Z-1;(CS)= ______0000_______ H,(IP)=______1200______________H。

PUSH Y;栈顶的内容为______13________H。

相关文档
最新文档