汇编考试试题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、填空题

1将十六进制数5EH转换为二进制和十进制表示

2.1011∨1001= 1011 ∧1001=

3.溢出标志OF和进位标志CF是两个意义不同的标志。

4.5.进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。

例1:3AH + 7CH=B6H

无符号数运算:58+124=182,范围内,无进位

有符号数运算:58+124=182 ,范围外,有溢出

例2:AAH + 7CH=(1)26H

无符号数运算:170+124=294,范围外,有进位

有符号数运算:-86+124=28 ,范围内,无溢出

6.逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:

(1)FFFFh:0 (2)40h:17h (3)2000h:4500h (4)B821h:4567h

将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址

如下逻辑地址用物理地址表达:

(1)FFFFh:0=FFFF0H

(2)40h:17h=00417H

(3)2000h:4500h=24500H

(4)B821h:4567h=BC777H (不要算错)

7.设置CX = 0,则LOOP指令将循环多少次?例如:

mov cx,0

delay: loop delay

〔解答〕216次。

8 计算push,pop指针变换。Push+2字节。pop-2字节。

二:名词解释

有效地址:地址EA是16位无符号数,表示操作数所在单元到段首的距离即逻辑地址的偏移地址。有效有效地址就是物理地址,也就是内存地址。

BCD码:二进制编码的十进制数,一位十进制数用四位二进制编码表示。

8421BCD码:用4位二进制编码的低十个数码表示0~9这时个数字。

寻址方式: 我们把寻找数的方式叫做操作数的寻址方式。

三判断分析题

(1)push ah 堆栈的操作数不能是字节量

(2)AX:AH高8位8-15,AL低8位。

(3)乘法mul 格式

(4)左移指令

(5)空操作指令

四、设计题

4.11a 设array是10个元素的数组,每个元素是8位数据。试用子程序计算数组元素的校验,并将结果存入变量result中。所谓“校验和”是指不计近位的累加,常用于检查信息的正确性。

解:

.model small

.stack

.date

count equ 10 ;数组元素个数

array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h;数组

result db?;校验和

.code

.startup;设置入口参数(含有D S←数组的段地址)

mov bx,offset array;BX←数组的偏移地址

mov cx,count:CX←数组的元素个数

call checksuma;调用求和过程

mov result,al;处理出口参数

.exit 0

;计算字节校验和的通用过程

;入口参数:DS:BX=数组的段地址:偏移地址,CX=元素个数

;出口参数:AL=校验和

;说明:除AX/BX/CX外,不影响其他寄存

checksuma proc

xor al,al ;累加器清0

suma: add al,[bx] ;求和

inc bx ; 指向下一字节

loop suma

ret

checksuma endp

end

〔习题4.18〕编写程序,将一个包含有20个有符号数据的数组arrayM分成两个数组:正

数数组arrayP和负数数组arrayN,并分别把这两个数组中的数据个数显示出来。

解:

.model small

include io.inc

.stack

.data

arrayM db 1,2,3,4,5,6,0,-3,-5,-6,0,7,6,90,-18,-23,34,7,9,8 ;源数组

arrayP db 20 dup(?) ;正数数组

arrayN db 20 dup(?) ;负数数组

dispP db 'Plus Number: ','$'

dispN db 0dh,0ah,'Negs Number: ','$'

.code

.startup

mov cx, 20 ;源数组元素数

xor bx, bx ;设bh为正数个数,bl为负数个数,均清零

xor si, si ;源数组地址位移量

again: ;循环20次

mov ax, arrayM[si] ;取一个元素

cmp ax,0 ;判正数

jl Neg

inc bh ;是,正数个数加1

jmp next

Neg: inc bl ;否,负数个数加1

next: inc si ;修改位移量

loop again ;循环次数减1

mov ah,09h ;调用显示字符串功能

mov dx, offset dispP ;显示个数

int 21h

mov al,bh

call dispuib ; 调用I/O子程序库中的子程序

mov ah,09h ;调用显示字符串功能

mov dx, offset dispN ;显示个数

int 21h

mov al,bl

call dispuib ; 调用I/O子程序库中的子程序

.exit 0

end

〔习题4.19〕编写计算100个正整数之和的程序。如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示‘overflow’。

〔解答〕

.model small

.stack

.data

相关文档
最新文档