请和位DX帮帮忙了,实在是不会做啊

甴曱 2008-07-24 01:49:10
请和位DX帮帮忙了,实在是不会做啊..

1.在实时模式下段地址和偏移地址为 3017:000A, 3015:002A 的存储单元的物理地址分别是什么?
3017: 000A 的物理地址=30170+000A=3017A
3015: 002A 的物理地址=30150+002A=3017A

2.执行下列指令后,AX寄存器中的内容是什么?
TABLE DW 10, 20, 30, 40, 50
ENTRY DW 3
MOV BX, OFFSET TABLE
ADD BX, ENTRY
MOV AX, [BX]

3.指出下列指令中的错误
(1) MOV AH, BX
(2) MOV BX, OFFSET MYDAT[SI]
(3) MOV CS, AX

4.对于下面的数据定义,各条MOV指令单独执行后,寄存器AX的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP (?)
(1)MOV AX, TYPE FLDB
(2)MOV AX, TYPE TABLEA

5.试分析下面程序段完成什么功能?
MOV CL, 04
SHL DX, CL
MOV BL, AH
SHL AX, CL
SHR BL, CL
OR DL, BL

6.编写程序段
将AX寄存器中的16位数分成4组,每组4位.然后把这四组数分别放在AL,BL,CL和DL中.

7.编写完整汇编程序
已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数.试编者按写一完整汇编程序,把既在A

中又在B中中出现在整数存于数组C中.
...全文
230 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
甴曱 2008-07-26
  • 打赏
  • 举报
回复
呵呵.回来了.结贴.

甴曱 2008-07-24
  • 打赏
  • 举报
回复
原来这么多好人....感动^^
我不会弄怎么给分的,朋友下周回来,一定把分给大家.立此贴为证.
BAYNPU 2008-07-24
  • 打赏
  • 举报
回复
6.编写程序段
将AX寄存器中的16位数分成4组,每组4位.然后把这四组数分别放在AL,BL,CL和DL中.
看看吧:
dseg segment
temp db 4 dup(?)
dseg ends
cseg segment
assume cs:cseg,ds:dseg
start:mov cl,4
mov ch,4
lea si,temp
l1:mov dx,ax
and dx,0fh
mov byte ptr[si],dl
inc si
shr ax,cl
dec ch
jnz l1
mov dl,temp
mov cl,temp+1
mov bl,temp+2
mov al,temp+3
cseg ends
end start
chtitaxie 2008-07-24
  • 打赏
  • 举报
回复
第六题:
mov DL,AL
or DL,0fh
mov CL,AL
or CL,0f0h
mov BL,AH
or BL,0fh
mov AL,AH
or AL,0f0h
甴曱 2008-07-24
  • 打赏
  • 举报
回复
可以再麻烦一下第六题.....我很小声的说..
甴曱 2008-07-24
  • 打赏
  • 举报
回复
不止是万分的感谢......眼泪哗哗的..
BAYNPU 2008-07-24
  • 打赏
  • 举报
回复
7.编写完整汇编程序
已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数.试编者按写一完整汇编程序,把既在A
中又在B中中出现在整数存于数组C中.
看看吧:
.model small
.stack 100h
.data
a dw 15 dup(?)
b dw 20 dup(?)
c dw 15 dup(?)
.code
main proc far
push ds
xor ax,ax
push ax
mov ax,@data
mov ds,ax
mov es,ax
mov si,0
mov bx,0
mov dx,15
l1:mov di,0
mov cx,20
mov ax,a[si]
l2:cmp b[di],ax
jnz l3
mov c[bx],ax
add bx,2
l3:add di,2
loop l2
add si,2
dec dx
jnz l1
ret
main endp
end main
BAYNPU 2008-07-24
  • 打赏
  • 举报
回复
将AX寄存器中的16位数分成4组,每组4位.然后把这四组数分别放在AL,BL,CL和DL中.
这道题其实很简单:先设置一个变量把初值赋给AX,然后用循环移位指令分别用传送把数据传送给AL、BL、CL、DL。
甴曱 2008-07-24
  • 打赏
  • 举报
回复
是的..实在不好意思了..
BAYNPU 2008-07-24
  • 打赏
  • 举报
回复
是不是第六、七道题不懂???
甴曱 2008-07-24
  • 打赏
  • 举报
回复
.........很感谢LS的两位DX,我是小白.还是不懂...可以再麻烦一下吗
cnzdgs 2008-07-24
  • 打赏
  • 举报
回复
1、你已经写出来了。
2、自己编译调试一下不就知道了。AX=1E00H,因为TABLE处的数据是0AH、00H、14H、00H、1EH、00H……,TABLE+3处是1EH、00H。
3、
(1)AH与BX不等长,不能用MOV指令赋值。
(2)OFFSET伪指令是取标号的偏移量的,MYDAT[SI]不是标号。
(3)CS段寄存器不能用MOV指令赋值,只能用段间跳转、调用或返回指令来修改。
4、(1)是1,(2)是2,TYPE是取类型的位数,与DUP无关。
5、把DX:AX组成的32位数左移4位(乘以16)。
6、一个数“与”0FH,结果就是这个数的低4位,分4次操作,每次取出AX的低4位,然后再把AX右移4位。
7、双重循环,外层循环从A中逐一取出整数,内层循环中与B中的数逐一对比,遇到相同的就储存到C。可以用BX、SI、DI分别表示三个数组的下标。
BAYNPU 2008-07-24
  • 打赏
  • 举报
回复
2.执行下列指令后,AX寄存器中的内容是什么?
TABLE DW 10, 20, 30, 40, 50
ENTRY DW 3
MOV BX, OFFSET TABLE
ADD BX, ENTRY
MOV AX, [BX]
答:AX=1E00
4.对于下面的数据定义,各条MOV指令单独执行后,寄存器AX的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP (?)
(1)MOV AX, TYPE FLDB
(2)MOV AX, TYPE TABLEA
答:1、AX=0001
2、AX=0002

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧