谁有汇编语言考试?
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
代码结束
结束开始