谁有汇编语言考试?

一、选择题

1.有一个翻译器,可以把汇编语言写的源程序翻译成CPU能识别的机器语言。这个编译器叫做(汇编)程序。

2.字符“a”的ASCII码值是(41H)。

3.MOVAX [BP]指令的隐含段是(SS)。

4.立即寻址(addax,1234H)的指令。

5.指令STC设置进位位(设置1)。

6.AX = 5aah,BX=FFFFH。执行异或AX和BX指令后,AX =(a5h)。

7.AX=100H,DX=123H。执行MUL DX指令后,DX=(1)。

8.AX=100H,DX=123H。执行SUB AX和DX指令后,进位位=(1)。

9.BX=100H,CX=1202H。执行SHL BX和CL指令后,BX=(400H)。

10已知(AH)=12H,(BL) = 09h,ADC AH和BL执行后,AH=(BBH或BCH)。

第二,填空。

1 ...有很多使DX=0的指令,写两种(MOV DX,0),(子DX,DX),(异或DX,DX),(和DX,0)。

2.JNE指令的作用是(当两个数不相等时跳转)。

3.在子程序参数传递中,RET 2指令的作用是(返回时弹出地址,然后弹出2个字节)。

4.al,60H中的功能是(从端口60H读入一个字节到AL中)。

5.如果打印机丢失了ASCII码(0D,0A),打印机将执行(回车)和(换行)。

第三,简答题。

1.子程序返回DOS程序(至少写一个程序只需要写按键指令)。

1:

移动轴,数据

移动ds,ax

……

Mov ah,4ch

Int 21h

2:

推送ds

异或ax,ax

推斧

……

浸水使柔软

2.列出7个可用于运算和操作的寄存器。

可用:Ax,bx,cx,dx,si,di,bp。

不可用:ds、cs、es、ip、ss、sp。

3.为什么运行速度很关键的时候用宏,存储空间很关键的时候用子程序?

汇编源程序时宏调用由汇编程序处理,子程序调用在程序执行时由CPU直接执行。子程序调用时,会比宏调用后的代码执行更多的call指令和RET指令;并且需要额外的指令传递参数,所以执行速度略慢。所以在运行速度是关键的时候使用宏。由于每次宏调用都需要进行宏扩展和宏体中的内容再次复制,宏汇编编写的程序会在目标代码中重复出现相同或相似的程序段,占用大量内存空间;子程序由call指令调用。无论调用多少次,子程序的目标代码在最终执行的程序中只出现一次,目标代码比较短。所以存储空间的关键是使用子程序。

4.描述:子程序参数传递的三种方法。

1.用寄存器传递参数

2.用内存变量传递参数

3.在堆栈上传递参数

C语言的子函数一般使用堆栈来传递参数。

第四,设计操作题。

写一个子程序,将数值0~F(在al中设置,A~F大写)转换成ASCII值显示(返回参数由AL传递)。需要一个过程定义,一个名为ZH的子程序。

ZH走近了

化学机械抛光铝,9

JA A1

添加铝,30H

A1:添加铝,37H

ENDP

第五,计算问题。

程序,计算1~11的奇数累计和。需要使用变量或数组,所有的段和程序,以及主程序和子程序,返回到DOS功能。要求:使用宏汇编编程,程序完整。(如果程序比较长,请分两栏写)。

数据段aa db 1,3,5,7,9,11,24h strg db '00$ '数据结束堆栈段堆栈Db 200 dup(0)堆栈结束代码段假设cs:code,ds:data,ss:Stack a 1 proc far Start:Mov ax,data Mov ds,ax Mov ax,0 Mov si,0 Mov cx,6 call A2 mov ah,al shr ah,6544

数据段

b分贝' 00美元'

数据结束

SSEG段对位叠加'叠加'

DB 80H DUP(?)

SSEG结束

代码段

假设ds:数据,SS:SSEG,cs:代码

A1过程远

开始:MOV斧,数据

MOV DS,AX

致电L1

MOV啊,艾尔

MOV CL,4

嘘啊,CL

还有AL,0FH

加啊,30H

添加铝,30H

MOV B[0],啊

MOV B[1],铝

mov dX,偏移B

mov ah,9h

int 21h

MOV啊,4CH

INT 21H

A1 ENDP

L1 PROC附近

MOV·阿尔,0

MOV BL,1

MOV CL,6

LOOP1:添加AL,BL

添加BL,2

循环LOOP1

浸水使柔软

L1 ENDP

代码结束

结束开始