汇编语言程序设计题

55555555555,老师让交作业,可是我都不会做,怎么办,只好上BAIDU来请教高手了.....
作业有两题,如下,有高手愿意帮助小弟么,给加分啊.....

1:从键盘输入一序列字符,然后按小写字母.数字字符和其他字符分类计数,最后分别显示出这三类字符的计数结果.(顺序和分支程序设计)

2:把AX寄存器中存放的16位二进制数分别转换为八进制和十六进制数,并在屏幕上显示.(循环程序设计)

跪求答案~~~~~~~

汇编语言程序设计模拟题

一、填空:
1、CPU的指令指针寄存器为: ,它与 寄存器联用确定下一条指令的物理地址。
2、若要将所有数据及代码都放在一个段内,应建立 存储模型。
3、操作数:ES:TABLE[DI]、FEES[EBX*2]、MSAK[EAX][EBX]分别采用 、
、 寻址方式。
4、读取当前光标位置可使用BIOS INT 10H的 号功能调用,作为出口参数,光标的行号及列号将从 寄存器中获得。
5、通常用CPU的 寄存器间接寻址端口地址。
6、如果在宏定义体设置局部标号,应使用 伪操作以避免在宏展开时出现标号的多重定义。
7、设(CS)=2A31H,(DS)=9300H,(SS)=25F0H,(BP)=0131H,(SI)=0110H,(DI)=0102H,则指令MOV AX,[BP+SI+8]的源操作数有效地址为________________,物理地址为_________________。
8、设(AX)=1000H,(BX)=2340H,则在执行了指令CMP AX,BX后,CF标志值为___________,ZF标志值为______________。

9、外设的发出中断请求若被CPU响应,有两个条件必不可少,即 和 。

10、显示字符串可使用DOS 9号功能,它要求被显示的字符串最后一个字符必须是 。

11、中断发生时,保存现场将 、 、 寄存器的内容存入堆栈。

12、n位二进制补码数的表数范围为: 。
13、将两个不同模块中的同名段重叠成两个段中较大的一个段,在定义段时应采用 组合属性。
14、操作数:ES:STRING[SI]、COUNT[ESI*4]、MSAK[EBX][ECX]分别采用 、 、 寻址方式。
15、设置光标位置可使用BIOS INT 10H的 号功能调用,作为入口参数,光标的行号及列号应存入 寄存器。
16、通常用CPU的 寄存器间接寻址端口地址。
17、若在模块1中引用模块2中定义的外部符号,则在模块1和模块2中的开头分别使用
、 伪指令。
18、设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,则指令MOV AX,[BP+SI+2]的源操作数有效地址为_________________,物理地址为____ __________。
19、有数据定义如下:
V1 DB 4 DUP(2),2
COUNT EQU 10
V2 DD COUNT DUP(8,5 DUP(?))

则:为变量V1分配____________个字节存贮空间;V2分配____________个字节存贮空间.

20、外设的发出中断请求若被CPU响应,有两个条件必不可少,即 和 。

21、子程序之间传递参数可使用 、 和 三种方式。

22、若中断类型为4AH,则中断向量的地址为 。

23、CPU的指令指针寄存器为: ,它与 寄存器联用确定下一条指令的物理地址。
24、当端口号≥256时,使用IN或OUT指令,必须先将端口号放到 寄存器。
25、操作数:ARY[EAX*2]、ES:[TABLE+SI]、SUM[EBX][EDX]分别采用 、
、 寻址方式。
26、变量有三属性,分别为: 、 、 。
27、如果在宏定义体设置局部标号,应使用 伪操作以避免在宏展开时出现标号的多重定义。
28、宏定义必须由伪指令 开始,伪指令 结束。
29、设(CS)=9896H,(DS)=9100H,(SS)=25F0H,(BX)=0111H,(SI)=0810H,(DI)=0102H,则指令MOV [BX+SI+8],CX的目的操作数有效地址为___ ________,物理地址为____ _________。
30、读取当前光标位置可使用BIOS INT 10H的 号功能调用,作为出口参数,光标的行号及列号将从 寄存器中获得。

31、中断发生时,保存现场将 、 、 寄存器的内容存入堆栈。

32、若:FEES DW 10 DUP(10,5 DUP(?)),则指令:MOV CX,LENGTH FEES执行后,(CX)= .

二、选择题

1、 下列寄存器中,( )可作为基址寄存器。
A、AX B、BX C、CX D、DX

2、 下列指令序列中,清除当前中断请求(EOI)命令为:( )
A、MOV AL,20H B、MOV AL,20H C、MOV AL,21H D、MOV AL,21H
OUT 20H,AL IN AL,20H OUT AL,21H IN AL,21H

3、 段定义时,使用( )定位类型,则该段必须从小段的边界开始。
A、BYTE B、WORD C、DWORD D、PARA

4、 若:(BX)=4336H,(CX)=0136H指令:SUB BX,CX 执行后,SF、ZF、OF、CF标志分别为( )
A、0,0,0,0 B、0,1,0,0 C、1,0,0,0 D、0,0,0,1

5、 若:FEES DW 10 DUP(100,?)

指令:MOV CX,LENGTH FEES执行后,CX的内容为:( )

A、1000 B、1 C、10 D、2000

6、 在循环指令中作为计数器的是( )寄存器。
A、AX B、BX C、CX D、DX

7、 在执行除法指令时,若除数为零则产生一个类型号为( )的中断。
A、0 B、1 C、3 D、4

8、 段定义时,使用( )定位类型,则该段必须从字的边界开始。
A、PARA B、WORD C、DWORD D、BYTE

9、 若:(BX)=4336H,(CX)=0136指令:SUB BX,CX 执行后,SF、ZF、OF、CF标志分别为:( )
A、0,0,0,1 B、0,1,0,0 C、1,0,0,0 D、0,0,0,0

10、若:FEES DW 100 DUP(?),

则指令:MOV CX,LENGTH FEES执行后,CX的内容为:( )

A、100 B、1 C、10 D、0

11、下列寄存器中,( )不能作为变址寄存器。
A、EAX B、EBP C、ECX D、ESP

12、 下列指令序列中,哪条指令与SUB AX,AX效果相同:( )
A、AND AX,AX B、OR AX,AX C、XOR AX,AX D、NOT AX

13、 将两个不同模块中的同名段重叠成两个段中较大的一个段,应采用( )组合属性。
A、PUBLIC B、COMMON C、PRIVATE D、MEMORY

14、 若:(AX)=0F365H,(CX)=0E024H指令:ADD AX,CX 执行后,SF、ZF、CF、OF标志分别为:( ).
A、1,0,1,0 B、0,1,0,0 C、0,0,0,0 D、0,0,0,1

15、 显示字符串可使用DOS 9号功能,它要求被显示的字符串最后一个字符必须是( ).

A、& B、$ C、% D、@

三、判断下列指令及伪指令是否正确(在括号中打“√”或“×”):
1、DIV 20H ( )

2、XCHG BX,ES ( )

3、CMP [BX],TABLE[SI] ( )

4、IN AL,DX ( )

5、MOV BYTE PTR[BX],25H ( )

6、MOV CS,0200H ( )

7、RET 8 ( )

8、LEA TABLE,BX ( )

9、ACL1 MACRO A,B,C ( )


ACL1 ENDM

10、NEWP PROC ( )



NEWP ENDP

11、MUL 20H ( )

12、MOV BX,[SI][DI] ( )

13、CMP [BX],TABLE[SI] ( )

14、OUT DX,AL ( )

15、MOV [DX],25H ( )

16、POP CS ( )

17、RET 8 ( )

18、LEA TABLE,BX ( )

19、MOVE EQU MOV ( )

20、FEED MACRO X,Y,Z ( )



FEED ENDM

21、ADD ES:BX,20H ( )

22、XCHG DX,DS ( )

23、CMP [BX],TABLE[SI] ( )

24、OUT DX,AL ( )

25、RET 8 ( )

26、DATA1 DB DATA0 ( )

27、MOVE EQU MOV ( )

四、完成下列指令序列:

1、将数据段中字串STRING1(长度为N),传送到附加段中以BUFF为首地址的缓冲区:



MOV SI,

MOV DI,

MOV CX, N

CLD

REP

2、分别用一条语句实现下述指明的功能

(1)变量AYD存放的地址指针送ES和SI

(2)AX的内容加1,要求不影响CF

.CODE

MAIN PROC FAR

MOV AX,@DATA

MOV DS,AX1、设置中断向量(中断例行程序为INTERHAND,中段类型号为N)



MOV AX,SEG INTERHAND

MOV DS,AX

MOV DX,

MOV AL,N

INT 21H



INTERHAND:



IRET

3、清除全屏幕



MOV AX,

MOV BH,7

MOV CX,

MOV DX,

INT 10H



4、分别用一条语句实现下述指明的功能

(1)字变量LIST存放的地址指针送ES和DI.

(2)将AX的内容加1,要求不影响CF.

(3)将BX的高4位置1,其余位不变.

(4)将SI指向的字单元内容存入堆栈.

(5)比较两个带符号数,若前者≥后者,则转向NEXT.

5、清除屏幕右半区域:



MOV AX,

MOV BH,7

MOV CX,0

MOV DX,

INT 10H


6、 MOV CL,8

SHL AX,CL

SHR BX,CL

ADD AX,BX

MOV WORD PTR DATA1,AX

问:上述指令序列的功能是什么?

7、 ┆

MOV AL,N

MOV AH,35H

INT 21H

PUSH ES

PUSH BX

PUSH DS

MOV AX,SEG INTERHAND

MOV DS,OFFSET INTERHAND

MOV AL,N

MOV AH,25H

INT 21H

POP DS



问:上述指令序列的功能是什么?

8、分别用一条语句实现下述指明的功能:

① 栈顶内容弹出送字变量MG1.

② 变量MG2类型属性送AH.

③ AX的内容加1,要求不影响CF.

④ 将EBX的低4位取反.

⑤ 若(CX)=0则转移至NEXT.

五、分析计算题:

1. 设(AX)=201BH,(BX)=110CH,(DI)=0001H,(DS)=4000H,(4110CH)=0AH,(4110DH)=81H,(4110EH)=70H;

则:① MOV AX,[BX]指令执行后,(AX)= ;

② MOV BH,BYTE PTR[BX+DI+1],指令执行后,(BX)= .

2.
MOV AX,6540H
MOV DX,3210H
MOV CL,04
SHL AX,CL
MOV BL,AH
OR DL,BL
试问上述程序段运行后,
(AX)=
(BL)=
(DX)=

3、

DATA1 DW 1000H
DATA2 DW 2000H

PUSH DATA1
PUSH DATA2
POP DATA1
POP DATA2
问:①上述程序段执行后,(DATA1)= ,(DATA2)= .
②设执行前(SP)=200H,执行后(SP)= .

4、 BUFF DB 7 , 6 , '56' ,?

ARRAY DW 0 , 67H , 7

BASUB EQU ARRAY-BUFF

问:BASUB的值是多少?它表示什么意义?

5、

MOV CL,3

MOV BX,0B7H

ROL BX,1

ROR BX,CL

问:上述程序执行完毕,BX寄存器的内容是什么?

6、



.DATA

STRING1 DB 50,?,50 DUP(?)

NEXT:

LEA DX,STRING1

MOV AX,0AH

INT 21H

CMP STRING1+2,0DH

JE EXIT

JMP SHORT PTR NEXT

EXIT:

MOV AX,4C00H

INT 21H

MAIN ENDP

END MAIN

说明上述指令序列的功能。

7.设(AX)=9A6CH,(BX)=710BH,(DI)=0002H,(DS)=6000H,(6710BH)=09H,(6710CH)=87H
(6710EH)=5EH;

则:① MOV AX,[BX]指令执行后,(AX)= ;

② MOV BL,BYTE PTR[BX+DI+1],指令执行后,(BX)= .

8. OPER1 DB 1,2

OPER2 DW 1234H,5678H

则: 指令 ① MOV AX,WORD PTR OPER1+1执行后,(AX)= .

② MOV AL,BYTE PTR OPER2执行后,(AL)= .

③ MOV AH,SIZE OPER2执行后,(AH)= .

六:叙述题:

调用程序和子程序之间参数传递有哪几种主要方式? 各自的特点是什么?

简述8086CPU的中断响应过程。

简述子程序调用与宏调用工作方式的区别。

七:程序设计:

1、设X、Y、Z、W均为16位带符号数单元地址,写出执行下述计算的子程序。
Z=│X+Y-W│

2、编写汇编语言源程序:测试ALPHA字节变量单元中的ASCII码字符串,进行如下操作:
(1)若为数字字符,送入NUM字节单元中,置标记FLAG为0;

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

(3)若为小写字母字符,送入SMLCHR字节单元中,置标记FLAG为0;
(4)否则,置标记FLAG为1.

(字符0,9,A,Z,a,z的ASCII分别为30H,39H,41H,5AH,61H,7AH)

3、设X、Y、Z均为16位带符号数单元地址,写出执行下述计算的子程序。

X+Z ,X≥Z

Y=

X-Z ,X<Z

4、已知有256个字节整数a1,a2,a3,...,a256存放在以NUMBER为首地址的数据区中。编一程序将其中的负数去除后将剩下的正数重新顺序存放在以PLUS开始的数据区中。

5、 编写程序段。用串处理指令,比较两个有10个字符的字符串变量CHR1和CHR2,如果两者全不相同则执行子程序OTHER,否则,顺序执行。

6、编写汇编语言源程序: 设在字单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入字单元D中,若有一个为0,则将其他两个单元也清零。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-11-19
我只能给你写主程序,其它的自己加吧。
第一题:先定义一个内存缓冲区,然后用dos功能调用
从键盘输入字符串到缓冲区。然后将缓冲区数据分类,
DL存小写字母个数,DH存数字个数,BH存其它字符个数。
BUFF DB 100 ;定义100字节缓冲区
DB ? ;系统填入实际输入字节数
DB 100 DUP(?)
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET BUFF
MOV AH, 0AH ;10号功能调用,从键盘
;输入字符,回车键结束。
INT 21H
MOV BX, DX
MOV CL, [BX+1]
LEA SI, OFFSET BUFF
ADD SI, 2
XOR BX, BX
XOR DX, DX
BEGIN:MOV AX, [SI]
CMP AX, 'z'
JA THREE
CMP AX, 'a'
JL TWO
INC DL
JMP NEXT
TWO: CMP AX, '9'
JA THREE
CMP AX, '0'
JL THREE
INC DH
JMP NEXT
THREE:INC BH
NEXT: INC SI
LOOP BEGIN
MOV AH, 2
INT 21H
MOV DL, 20H
INT 21H
MOV DL, DH
INT 21H
MOV DL, 20H
INT 21H
MOV DL, BH
INT 21H
第二题:先定义缓冲区存放结果,二进制转换为八进制
时,三位二进制为一位八进制,16位共6位;转16进制
时,4位二进制为一位16进制,共4位。显示要用ASCII码,
所以每一位占一个字节,共10个字节。所以至少定义10
字节的缓冲区。
BUFF DB 20 DUP(?) ;定义20字节缓冲区
MOV AX, DATA ;将数据装入AX
MOV DS, AX
LEA DI OFFSET BUFF ;DI指向缓冲区首字节
XOR BX, BX ;BX清零
MOV CL, 9 ;设置循环次序
ROL AX, 1 ;八进制首位转换
RCL BX, 1
JMP NEXT
BEGIN: XOR BX, BX ;八进制其它5位转换
PUSH CL
MOV CL, 3
ONE: ROL AX, 1
RCL BX, 1
LOOP ONE
POP CL
DEC CL
JMP NEXT
BEGIN2:XOR BX, BX ;16进制转换
PUSH CL
MOV CL, 4
TWO: ROL AX, 1
RCL BX, 1
LOOP TWO
POP CL
DEC CL
CMP CL, 0
JE NEXT2
NEXT: AND BX, 30H ;转ASCII码
MOV [DI],BX ;储存
INC DI
CMP CL, 4
JA BEGIN
JL BEGIN2
MOV [DI],20H
INC DI
JMP BEGIN2
NEXT2:MOV DX,OFFSET BUFF ;DX指向缓冲区首字节
MOV AH,9 ;9号功能调用
INT 21H本回答被提问者采纳
第2个回答  2006-11-15
这个我们以前做过,但找不到了,早2年写的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网