教材大纲
当前位置:首页 > 新闻资讯 > 教材大纲
重庆自考汇编语言自测试题
发布时间:2024-09-13 10:38:58

一、填空题

1、请用一条指令实现如下操作:

(1)将AX中划‘X’的位清0

15   5  4   0

┏┳┳┳┳┳┳┳┳┳┳━┳━┳┳┳┳┓

┃┃┃┃┃┃┃┃┃┃┃X┃X┃┃┃┃┃ 指令:__________________

┗┻┻┻┻┻┻┻┻┻┻━┻━┻┻┻┻┛

(2)寄存器的低四位取反:_________________

2、三个重复前缀指令为__________________、________________、______________。

3、DB指令以_______________为单位分配存贮;DD指令以__________为单位分配存贮。

故如下数据定义:

V1 DB 4 DUP(2),2

COUNT EQU 10

V2 DD COUNT DUP(?)

为变量V1分配_____个字节存贮;为变量V2分配_____个字节存贮。

4、设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,

则(1)指令MOV AX,[BP+SI+2]的源操作数有效地址为_______,物理地址为________

(2)指令MOV AX,[DI+100H]的源操作数有效地址为_______,物理地址为________.

5、8086/8088 CPU可访问2个独立的地址空间,一个为存贮器地址空间,其大小为____个字节;另一个为______,其大小为_______字节.

6、设(AX)=1000H,(BX)=2340H,则在执行了指令CMP AX,BX后,CF标志值为____,ZF标志值为______。

二、编写功能程序块

1、将DX:BX:AX中的数右移4位。

2、字变量ADDR的段地址在DS中,将ADDR字单元中1的个数存入CX 。(例如:[ADDR]=1000000100000100B,则1的个数为3 )

3、设BX寄存器包含两个非组合BCD数,请将非组合BCD数转换成对应的组合BCD数,存入AL寄存器。

三、简答题

1、简述汇编语言相对高级语言的优点。

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

四、阅读程序,分析结果

1、从键盘读入一字符串(长度小于40),将该串反转后,输出显示。

MAXNO EQU 41

SSEG SEGMENT STACK

DW 100 DUP(?)

SSEG ENDS

DSEG SEGMENT

MESG1 DB 'INPUT A STRING:$'

MESG2 DB 'IT'S REVERSE IS:'

BUF DB MAXNO,?,MAXNO DUP(?)

DSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG,DS:DSEG

START:________________

MOV DS,AX

MOV DX,OFFSET MESG1

MOV AH,9

INT 21H

MOV DX,OFFSET BUF

__________________

INT 21H

XOR AX,AX

__________________ ;取实际读入字符个数

LEA DI,BUF+2

MOV SI,DI

ADD SI,AX

MOV BYTE PTR [SI],'$'

DEC SI

CONT:

CMP DI,SI

_______________

MOV AL,[SI]

XCHG AL,[DI]

DEC SI

________________ ;调整DI

JMP CONT

FINISHD:

LEA DX,BUF+2

MOV AH,9

INT 21H

MOV AX,4C00H

INT 21H

CSEG ENDS

END START

2、设num1,num2都为字变量,各存贮一个有符号数,请指出下面语句序列的功能

MOV AX,num1

XOR DX,DX

OR AX,AX

JNS SKIP

MOV DX,OFFFFH

SKIP: Ispan num2

五、判断正误,若判断为错,请说明理由

1、MOV DS,0

2、MOV AX,[SI][DI]

3、MOV BYTE PTR[BX],10H

4、每个汇编语言源程序模块都必须以END伪指令结束。END伪指令用于向汇编程序指示源程序的结束;在需要时,还可以用于程序入口地址。

5、设AX寄存器中为一个有符号数,用如下语句序列完成:

CMP AX,0

JE DONE

MOV AX,-1

JL DONE

MOV AX,1

DONE:

附:99年北京市汇编语言自考上机题:

要求:从键盘输入一组四位的十进制数,每组数中间以空格分割,以回车作为输入结束标志,后将这组数按升序输出。

用汇编语言实现,方法不限。

时间:三小时。

下面给出此题一解法:(注:实现方法很多,这里只供参考)

方法:在内存中开辟一串以字为单位的内存单元,为了存放输入的四位十进制数,由于从键盘输入的每一次数均为0-9的一位十进制数,它的输入编码为30H-39H的八位二进制数,将它的高四位置0,就可以得到一个四位二进制数,将第一次输入的数暂存由一个寄存器中,等第二次输入并处理为一个高四位为0的十进制数后,将寄存器左移四位后与新输入的数相加,依次输入完四位十进制数,可以得到一个十六位的BCD码,将寄存器内的数放入内存单元(一个字),待全部数输入完后就可将内存单元中的乱序BCD码排序,然后将排序后的BCD码输出,就为升序的十进制数。

(如有更好的方法请将原代码发送至djxhome@263.net)

data segment ;设置数据段

in_disp db 'input:$'

out_disp db 'output:$'

numb dw 100 dup(0)

data ends

code segment ;设置代码段

assume cs:code,ds:data

start:

mov ax,data ;将数据段段寄存器DS置为实际地址

mov ds,ax

lea dx,in_disp ;显示提示信息

mov ah,9

int 21h

sub bx,bx

sub cx,cx

sub di,di

sub si,si

r1: ;输入数组到内存

mov ah,1

int 21h

cmp al,0dh

jz exit1

cmp al,' '

jz nub_mem

sub al,30h

mov cl,4

shl bx,cl

add bl,al

jmp r2

nub_mem:

mov numb[si],bx

add si,2

inc di ;累计输入个数

sub bx,bx

r2:

jmp r1

exit1:

mov numb[si],bx

inc di

mov dl,0ah ;显示换行、回车

mov ah,2

int 21h

mov dl,0dh

mov ah,2

int 21h

mov cx,di ;进行排序

dec cx

sub bx,bx

px:

mov ax,numb[bx]

mov si,2

mov dx,cx

px1:

cmp ax,numb[bx+si]

jc pxx

xchg ax,numb[bx+si]

mov numb[bx],ax

pxx:

add si,2

dec dx

jnz px1

add bx,2

loop px

lea dx,out_disp ;显示输出提示

mov ah,9

int 21h

sub si,si ;输出排序后的数组

r3:

mov bx,numb[si]

mov dl,bh

mov cl,4

shr dl,cl

add dl,30h

mov ah,2

int 21h

mov dl,bh

and dl,0fh

add dl,30h

mov ah,2

int 21h

mov dl,bl

mov cl,4

shr dl,cl

add dl,30h

mov ah,2

int 21h

mov dl,bl

and dl,0fh

add dl,30h

mov ah,2

int 21h

mov dl,' '

mov ah,2

int 21h

add si,2

dec di

jnz r3

mov ah,4ch ;调用DOS 21H的4C子功能返回DOS

int 21h

code ends

end start


学习提升资料免费领取

全国院校学费价格表
全国院校学费价格表
重点院校专业一览表
重点院校专业一览表
历史真题及学霸笔记
历史真题及学霸笔记
热门专业就业前景
热门专业就业前景
学历
电话
位置
立即领取

服务热线:15523638138

重庆市沙坪坝区法商教育培训学校 版权所有

渝ICP备18000013号-7

首页
网上报名
在线咨询
联系电话