|
主题 : : 检测题,通过 [待解决] |
回复[ 1次 ]
点击[ 390次 ] | |
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47 |
一、将标号a处的8个数累加的和放到标号b处所在的单元中,下面选项中的程序正确的是___4___。
1、 assume cs:code
code segment
mov si,0
mov cx,8
s: add b,a[si] ;b代表cs:[8],add cs:[8],cs:[0+si],错了。
inc si
loop s
mov ax,4c00h
int 21h
a db 1,2,3,4,5,6,7,8
b db 0
code ends
end
2、 assume cs:code,ds:data
data segment
a db 1,2,3,4,5,6,7,8
b db 0
data ends
code segment
start:
mov si,0
mov cx,8
s: mov al,a[si] ;cs段里没有把ds指向data段
add b,al
inc si
loop s
mov ax,4c00h
int 21h
code ends
end start
3、 assume cs:code ;没有ds:data
data segment
a db 1,2,3,4,5,6,7,8
b db 0
data ends
code segment
mov ax,data
mov ds,ax
mov si,0
mov cx,8
start:
mov al,a[si] ;因为assume中没有ds:data,所以这里的a[si],是cs:[a+si]
add b,al
inc si
loop start
mov ax,4c00h
int 21h
code segment
end
4、 assume cs:code,ds:data
code segment
p: mov si,0
mov cx,8
mov ax,data
mov ds,ax
s: mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ax,4c00h
int 21h
code ends
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
end p
二、下列说法中正确的是__2____。
1、 当数据的标号不在代码段时,只要用assume伪指令将数据段和相应的段寄存器连接起来就可以了。
2、 数据标号和地址标号唯一的区别就是,数据标号既表示内存单元的地址,还表示内存单元的长度,而地址标号只表示内存单元的地址。
3、 直接定址表只可以存储数据的地址,不可以存储程序段的地址。
4、 在中断服务程序用到直接定址表时,和不在中断服务程序的使用一样,直接调用即可。
关于2,有人说还有一个区别就是地址标号只能放在cs段里。但我觉得这题的重点是要说明数据标号和地址标号代表什么,而不是放什么地方。但前面的一个唯一,我也觉得这题不严密。我觉得应该是这样“ 数据标号和地址标号有一个区别就是,数据标号既表示内存单元的地址,还表示内存单元的长度,而地址标号只表示内存单元的地址。”
三、关于直接定址表描述错误的是 1
1、 直接定址表和数据标号一样只是用来标记地址的。
2、 直接定址表可以方便的编写一些查表类的程序。
3、 直接定址表中包含了数据长度信息。
4、 直接定址表的数据可以定义在代码段。
第一个错,因为它还指明了数据的长度。 | | |