汇编语言习题(2)

更新时间:2023-12-10 06:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3章 自测练习 一、选择题(四选一)

1. 表示一条处理器指令所在存储单元的符号地址是 。 A 变量 B 常量 C 标号 D 偏移量

2. 2.汇编语言中的变量有多种类型属性,但错误的类型是 。 A 字节型byte B 字符型char C 字型word D 双字型dword

3. 执行mov bx,seg var指令,BX得到变量var的 。 A 物理地址 B 段地址 C 偏移地址 D 内容 4. MASM语句中,采用 分隔标号和指令。 A 逗号 B 分号 C 冒号 D 空格

5. 欲设定从偏移地址100H开始安排程序,可使用 伪指令。 A org 100h B start=100h C start db 100h D start equ 100h

6. 与“mov bx,offset var”指令等效的指令是 。 A mov bx,var B 1ds bx,var C les bx,var D 1ea bx,var.

7. 语句buf db l0 dup(3 dup(?,10),3,10)

汇编后,变量buf占有的存储单元字节数是 。 A 100 B 80 C 40 D 20

8. 数据定义语句“numl dw(12 or 6 and 2) ge 0eh”,定义的num1单元的内容

是 。

A 0 B 0FFFFH C 1 D 0FFH

9. 要求将A、B两个字符的ASCII码41H和42H顺序存放在连续两个字节存储

单元中,可选用的语句是 。

A db`AB' B dw `AB' C db 0ABH D dw 0ABH 10. 在汇编语言程序中,对END语句叙述正确的是 。 A END语句是一可执行语句

B END语句表示程序执行到此结束 C END语句表示源程序到此结束 D END语句在汇编后要产生机器码

11. 下面的数据传送指令中,错误的操作是 。 A mov ss:[bx+di],byte ptr 10h B mov dx,l000h C mov word ptr[bx],1000h D mov ds,2000h 12. 下面指令执行后,变量dab中的内容是 。 daw dw 2A05h dab db 0Fah

?

mov al,byte ptr daw sub dab,al

A 0DAH B 0FAH C 0F5H D 0D0H

1

13. 根据下面的语句序列,AX寄存器的内容是 。 tab db 1,2,3,4,5,6 entry equ 3

?

mov bx,offset tab add bx,entry mov ax,[bx]

A 0405H B 0304H C 0504H D 0403H

14. 假设V1和V2是用DW定义的变量,下列指令中正确的是 。 A mov V1,20h B mov V1,V2 C mov al,V1 D mov 2000h,V2

15. 若定义xyz dw`A',则xyz字存储单元中存放的数据是 。 A 0041H B 4100H C 0061H D 6100H 16. 使用伪指令定义:

val db 2 dup (1,2,3dup(3),2dup(1,0),1)

则在val存储区内前10个字节单元的数据是 。

A 1,2,3,3,2,1,0,1,2,3 B 1,2,3,3,3,3,2,1,0,1 C 2,1,2,3,3,2,1,0,2,1 D 1,2,3,3,3,1,0,1,0,1 二、填空题

1.用汇编语言编写的程序称为 ,它必须由_________程序将它转换成二进制的机器语言程序,这种机器语言程序被称为__________ ,而转换的过程称为____________。它还必须用__________程序连接,才能生成可执行的程序.

2.汇编语言源程序的扩展名是_ __,目标程序的扩展名是________,通常产生的可执行程序的扩展名是_________·

3.汇编语言语句中,源操作数和目的操作数采用 分隔。 4.指令“cmp ax,80h”中源操作数的寻址方式是 。 5.若定义“datavar db 0a5h,5bh”,填空指令“mov bx,__________ datavar”,使该指令无语法错误。

6.若操作结果为零转向标号goon,应使用的语句为__________。

7.与指令“loop again”功能等效的两条指令依次是__________ 和___________。

8.用“dw 1234h”语句定义的一个字,如果改用db定义时,语句应为______________。 9.定义wdata dw l020h,则执行mov al,byte wdata指令后,AL=______________。 10.如下数据定义:

V1 db 4dup(2),2 count equ 10

V2 dd count dup(?)

为变量V1分配 个字节存储;为变量V2分配 个字节存储.

11.现有变量定义如下: ary dw 10 dup(?) 试填写执行如下指令的结果:

mov ax,type ary ;AX=___________ mov bx,length ary ;BX=___________ mov cx,size ary ;CX=___________

2

12.已知数据段如下: org 0100h ary dw 3,$+4,5,6 cnt equ $-ary db 1,2,cnt,3

则执行如下指令后,AX=_____,BX=______。

mov ax,ary+2 mov bx,ary+10 13.程序段如下:

blk db 46h,84h,34h,-5,20h,22h,73h

?

mov cx,7 lea si,blk next: mov al,[si] inc si test al,81h loopz next mov bl,[si]

该程序段运行后,AL=______、BL=_________。

14.如下源程序

;数据段 avar dw 0 bvar dw 0

cvar dw 10,20,30 ;代码段

lea bx,cvar mov ax,[bx] mov bvar,ax mov ax,[bx+2] add ax,bvar mov avar,ax

执行后,avar= 。

三、问答题

1.汇编语言中,伪指令语句与硬指令语句的本质区别是什么?

2.汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。3.源程序中如何指明程序执行的起始点? 4.标号有哪三个属性?其含义是什么? 5.说明如下两条语句的区别: ①xyz1 ab 75 ②xyz2equ 75

6.下列语句在存储器中分别为变量数据区分配多少个字节单元?

①var5 dd 10

②var6 dw 4 dup(?),2

3

四、程序阅读题

1.下述程序段运行后,从Bxyz单元开始依次存放的数据是什么? Axyz db 0F8h Bxyz db 3dup(?)

?

lea di,Bxyz

mov cx,3 mov al,Axyz lop: sar al,1 mov [di],al inc di loop lop 2.现有源程序如下: ;数据段 org 100h

block dw l,2,3,4,5,6,7,8,9 count equ ($-block)/2

result dw count,?

;代码段 lea bx,block-2 mov cx,result xor ax,ax goon: add bx,2 cmp ax,[bx] jae next mov ax,[bx] next: loop goon

mov result+2,ax 该程序段执行完后:

①result+2字存储单元的内容是什么? ②BX等于多少?

③程序循环了多少次? 3.现有下列数据段:

string db`ABCDEFGHIJKL' count equ $-string buffer db count dup(0)

下面程序段是实现把string中所有字符逆向传送到buffer缓冲区(即将string中第一个字符送到buffer的最后一个单元,sting中最后一字符送到buffer的第一个单元,??)。请把程序中所空缺的指令填上。

mov si,offset buffer-1 mov di,offset buffer

mov cx,count

again: movsb

4

_____________________ loop again

4.说明如下程序段完成什么功能 dxyz1 db 300 dup(?) dxyz2 db l00 dup(?)

?

mov cx,100

mov bx,200 mov si,0 mov di,si

next: mov al,dxyz1[bx][si] mov dxyz2[di],al inc si inc di loop next

五、程序设计题

1.分别用一个说明性语句完成如下要求:

①将数据56h、78、0b3h、100依次存放在字节变量onebyte中; ②字变量twoword依次存放数据3721h、l0h、100、4936h; ③将字符串’How are you!’存入变量fourmsg;

④以fivemulti为首地址,连续存放字节数据,2个23h,5个`A',10个1和2,25个预留单元。

2.分别用一个执行性语句完成如下要求: ①栈顶内容弹出送字变量stkw;

②双字变量memd存放的地址指针送ES和SI; ③变量vars类型属性送AX;

④取字符串变量msg00的首地址送BX; 3.按照给定的条件为程序定义一个数据段: ①datal是字符串THIS IS A DATA_SEGMENT;

②data2是字节变量,初值为23、4BH、126、D3H;

③data3是16位数据变量,初值为100、255、3、5、3、5、3、5; ④data4是16位数据变量,但只知需要占有100个存储单元;

⑤data5变量存放data4变量的数据个数. 4.假设有一个数据段: buf1 db l00dup(`z') buf2 dw 1234h,5678,0abh buf3 db 20 dup (?) buf4 db 9,8,7,6,5

请分别用一条语句完成如下操作: ①将buf1的偏移地址送人BX;

②将buf2的第4个字节数据送DH;

③将数据9fh送人buf3的第10个存储单元;

④将buf4中最后一个单元内容加1,但不能改变标志CF的状态;

5

⑤计算buf1和buf3两者所占存储单元字节个数送CX。

5.现要将具有20个字符的string1字符串移到同一个数据段的string2中,请定义数据段,编写代码段.

6.从键盘输入一个字符串(不超过255个),将其中的小写字母转换成大写字母,然后按原来的顺序在屏幕上显示。

6

本文来源:https://www.bwwdw.com/article/mx95.html

Top