汇编语言程序设计基础 习题.pdf
《汇编语言程序设计基础 习题.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计基础 习题.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1/10 第 5 章 汇编语言程序设计 1.下列标号为什么是非法的?(1)GET.DATA (2)1_NUM (3)TEST-DATA(4)RET (5)NEW ITEM 答案:(1)因为.只允许是标号的第一个字符(2)第一个字符不能为数字 (3)不允许出现-(4)不能是保留字,如助记符 (5)不能有空格 2.下面的数据项定义了多少个字节?DATA_1 DB 6 DUP(4 DUP(0FFH,89H)答案:48 字节 3.下面两个数据段中偏移地址为10H和11H的两个存储单元中的数据是一样的吗?为什么
2、?DTSEG SEGMENT ORG 10H DATA1 DB 72H DB 04H DTSEG ENDS DTSEG SEGMENT ORG 10H DATA1 DW 7204H DTSEG ENDS 答案:不一样。分别是 72H,04H 和 04H,72H。存储字时低 8 位存在低字节,高 8 位存在高字节。4.下面的数据项设置了多少个字节?(1)ASC_DATA DB 1234 (2)HEX_DATA DB 12 H,34H 答案:(1)设置了 4 个字节 (2)设置了 2 个字节 5判断以下说法是否正确,如有错,请说明原因并改正。(1)伪指令在汇编过程中不会产生二进制代码。(2)宏和过
3、程的相同之处是都可用于简化源程序书写、精简目标代码。(3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。(4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。答:(1)正确。(2)错误。宏不能精简目标代码。(3)错误。高级语言程序经编译或解释后直接转换为目标代码。(4)正确。6已知数据和符号定义 A1 DB?A2 DB 8 K1 EQU 100 判断下列指令的正误,并说明错误指令的原因。(1)MOV K1,AX(2)MOV A2,AH (3)CMP A1,A2 (4)MOV BX,K1 MOV BX,DX(5)K1 EQU 200 欢迎您阅读并下载本文档,本文档来源于互联网,如
4、有侵权请联系删除!我们将竭诚为您提供优质的文档!2/10 答:(1)错。K1 是符号常数,在此处相当于立即数 100,故不能做目的操作数。(2)正确。(3)错。A1、A2 都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直接进行比较。(4)正确。(5)错。用 EQU 定义的符号不能重新赋值,除非已用 PURGE 解除了原值。7若数据段中有定义 NUM1 EQU 23H NUM2 DW 0 则指令 MOV NUM2,NUM1 的源、目操作数的寻址方式以及指令执行后 NUM21单元的内容分别是什么?答:指令 MOV NUM2,NUM1 的源操作数使用立即数寻址,目的操作数使用直接寻址
5、。指令执行后 NUM21 单元的内容是 0。8已知某数据段从物理地址 03000H 处开始,定义如下:DSEG SEGMENT ORG 2000H A1 DD 2 DUP(7,1,?)A2 DB 10 DUP(0,4,3 DUP(2),5)CNT EQU 20H A3 DW 100 DUP(?)DSEG ENDS 请分别用分析运算符 SEG、OFFSET、LENGTH、SIZE、TYPE 求出 A1、A2、A3 的段基址、偏移量、类型及它们的 LENGTH、SIZE。答:(SEG A1)=0300H,(OFFSET A1)=2000H,(TYPE A1)=4,(LENGTH A1)=2,(SI
6、ZE A1)=24=8;(SEG A2)=0300H,(OFFSET A2)=2018H,(TYPE A2)=1,(LENGTH A2)=10,(SIZE A2)=101=60;(SEG A3)=0300H,(OFFSET A3)=2054H,(TYPE A3)=2,(LENGTH A3)=100,(SIZE A3)=1002=200 9已知符号定义语句如下:ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2 分别求下列各表达式的值。(1)ALPHA*4 GT BETA (2)ALPHA MOD GAMMABETA(3)(BETA/3)LE 5 (4)ALPHA AND
7、 BETA (5)GAMMA XOR(BETA EQ 25)答案:(1)ALPHA*4 GT BETA =100*4 GT 25 =0FFFFH(2)ALPHA MOD GAMMABETA =100 MOD 225 =25(3)(BETA/3)LE 5 =(25/3)LE 5 =0 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!3/10(4)ALPHA AND BETA =100 AND 25 =64H&19H =0(5)GAMMA XOR(BETA EQ 25)=2(25 EQ 25)=0FFFDH 10根据下列要求编写一个汇编语言程序:1)代
8、码段的段名为 COD_SG 2)数据段的段名为 DAT_SG 3)堆栈段的段名为 STK_SG 4)变量 D1 所包含的数据为 95 5)将变量 D1 装入 AH,BH 和 DL 6)程序运行的入口地址为 START 答案:DAT_SG SEGEMNT D1 DB 95 DAT_SG ENDS STK_SG SEGMENT DW 64 DUP(?)STK_SG ENDS COD_SG SEGMENT MAIN PROC FAR ASSUME CS:COD_SG ASSUME DS:DAT_SG,SS:STK_SG START:MOV AX,DAT-SG MOV DS,AX MOV AH,D1
9、MOV BH,AH MOV DL,AH MOV AH,4CH INT 21H MAIN ENDP COD_SG ENDS END START 11.执行下列指令后,AX 寄存器中的内容是什么?TABLE DW 10,20,30,40,50 ENTRY DW 3 .MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,BX 答案:(AX)=1E00H 12.指出下列程序中的错误:STAKSG SEGMENT DB 100 DUP(?)STA_SG ENDS DTSEG SEGMENT DATA1 DB?DTSEG END CDSEG SEGMENT MAIN PROC
10、FAR START:MOV DS,DATSEG MOV AL,34H ADD AL,4FH MOV DATA,AL START ENDP CDSEG ENDS END 答案:改正后:STAKSG SEGMENT DB 100 DUP(?)欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4/10 STAKSG ENDS (段名必须一致)DTSEG SEGMENT DATA1 DB?DTSEG ENDS (段的结束符为 ENDS)CDSEG SEGMENT MAIN PROC FAR ASSUME CS:CDSEG,DS:DTSEG,SS:STAKSG
11、(必须把涉及的段的段名与相应的段寄存器联系起来)START:MOV AX,DTSEG MOV DS,AX (不能利用立即数寻址方式向段寄存器赋初值)MOV AL,34H ADD AL,4FH MOV DATA1,AL MOV AH,4CH INT 21H (程序执行完后必须返回 DOS)MAIN ENDP (过程名前后必须一致)CDSEG ENDS END START (对主程序来说,程序结束符后必须跟程序的开始符)13.DATA SEGMENT TABLE_ADDR DW 1234H DATA ENDS .MOV BX,TABLE_ADDR LEA BX,TABLE_ADDR 请写出上述两条
12、指令执行后,BX 寄存器中的内容。答案:MOV BX,TABLE_ADDR ;执行后(BX)=1234H LEA BX,TABLE_ADDR ;执行后(BX)=OFFSET TABLE_ADDR 14试编写一个汇编语言程序段,要求对键盘输入的小写字母用大写字母显示出来。答案:abc:mov ah,1 int 21h cmp al,a jb stop cmp al,z ja stop sub al,20h mov dl,al mov ah,2 int 21h jmp abc stop:ret 15编写程序,比较两个字符串 STRING1 和 STRING2 所含字符是否完全相同,若相同则显示“M
13、ATCH”,若不同则显示“NO MATCH”。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!5/10 答案:datarea segment string1 db asfioa string2 db xcviyoaf mess1 db MATCH,$mess2 db NO MATCH,$datarea ends prognam segment main proc far assume cs:prognam,ds:datarea start:push ds sub ax,ax push ax;返回 DOS mov ax,datarea mov ds,
14、ax mov es,ax;赋初值 begin:mov cx,string2-string1 mov bx,mess1-string2 cmp bx,cx;比较两字符串的长度 jnz dispno lea si,string1;若长度相同 lea di,string2;地址指针赋初值 repe cmpsb;比较 jne dispno mov ah,9;相同,显示 MATCH lea dx,mess1 int 21h ret dispno:mov ah,9;不同,显示 NO MATCH lea dx,mess2 int 21h ret main endp prognam ends end star
15、t 16把 010010之间的 30 个数,存入首地址为 GRAD 的字数组中,GRADE+i 表示学号为 i+1的学生成绩。另一个数组 RANK 是 30 个学生的名次表,其中 RANK+I 的内容是学号为 i+1 的学生的名次。试编写程序,根据 GRAD 中的学生成绩,将排列的名次填入 RANK 数组中(提示:一个学生的名次等于成绩高于这个学生的人数加 1)。答案:dseg segment grade dw 30 dup(?)rank dw 30 dup(?)dseg ends cseg segment main proc far assume cs:cseg,ds:dseg,es:dse
16、g start:push ds sub ax,ax push ax mov ax,dseg mov ds,ax mov es,ax begin:mov di,0 mov cx,30 loop1:push cx mov cx,30 mov si,0 mov ax,gradedi mov dx,0 loop2:cmp gradesi,ax jbe go_on inc dx go_on:add si,2 loop loop2 pop cx inc dx mov rankdi,dx add di,2 loop loop1 ret mainendp cseg ends end start 欢迎您阅读并下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计基础 习题 汇编语言 程序设计 基础
限制150内