汇编语言第一次作业

更新时间:2023-12-08 21:34:01 阅读量: 教育文库 文档下载

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

姓名:薛锦利 学号:14710074

汇编语言第一次作业

1、以下常用的十进制数转换为二进制数和十六进制数:

3 2 7 6 7 D 2 5 5 D 6 5 5 3 5 D 答:

32767 D=111111111111111 B =7FFF H 255 D=11111111 B =00FF H

65535 D=1111111111111111 B =FFFF H

2、回答问题

指令MOV AX,[BX+DI-2]

假设,(DS)=5000H,(BX)=1223H,(DI)=54H,(51275)=54H (51276)=76H

那么,存取的物理存储单元的地址是多少?

答:(AX)=7654H

3、假设(SS)=2250H, (SP)=0140H,

如果在堆栈中存入4个数据,则栈顶的物理地址为多少? 如果又从堆栈中取出2个数据,则栈顶的物理地址是多少? 答:

如果在堆栈中存入4个数据,则栈顶的物理地址为22640H; 如果又从堆栈中取出2个数据,则栈顶的物理地址是22638H。

4、假设(DS)=2000H, (ES)=2100H, (SS)=1500H, (SI)=00A0H,

(BX)=0100H(BP)=0010H,数据段中变量名VAL的偏移地址值为0050H, 试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?

(1) MOV AX, 0ABH (2) MOV AX, BX

(3) MOV AX, [100H] (4) MOV AX, VAL (5) MOV AX, [BX] (6) MOV AX, ES:[BX] (7) MOV AX, [BP] (8) MOV AX, [SI]

(9) MOV AX, [BX+10] (10) MOV AX,VAL[BX] (11) MOV AX, [BX][SI]

(12) MOV AX, VAL[BX][SI] 答:

1、Mov ax,0ABH 立即寻。没有物理地址

2、Mov ax,bx 寄存器寻,没有物理地址,ax=0100H

3、Mov ax,[100H] 直接寻 物理地址=20000H+100H=20100H 4、Mov ax,VAL 直接寻 物理地址=20000H+0050H=20050H 5、Mov ax,[bx] 寄存器间接寻 物理地址=20000H+0100H=20100H

6、Mov ax,ES:[bx] 寄存器间接寻 物理地址=21000H+0100H=21100H 7、Mov ax,[BP] 寄存器间接寻 段是SS 物理地址=15000H+0010H=15010H

8、Mov ax,[SI] 寄存器间接寻 物理地址=20000H+00A0H=200A0H 9、Mov ax,[Bx+10] 寄存器相对寻 物理地址=20000H+0100H+10=20110H 10、mov ax,VAL[Bx] 寄存器相对寻 物理地址=20000H+0050H+0100H=20150H

11、mov ax,[bx][SI] 基址加变址寻 物理地址=20000H+0100H+00A0H=201A0H

12、mov ax,VAL[bx][SI] 相对基址加变址 物理地址=20000H+0100H+00A0H+0050H=201F0H

5、一个有16个字的的数据区,它的起始地址为: 70B0:DDE6,请写出这个数据区首末字单元的物理地址 答:

70B0H*16+0DDE6H=7E8E6H 7E8E6H+(10H-1)=7E814H

6、试分析下列程序段执行完后,A单元的内容是多少? Data segment

A dw 0 B dw 0

C dw 240, 20, 54 Data ends Code segment … MOV BX, OFFSET C MOV AX, [ BX ] MOV B, AX MOV AX,2[ BX ] ADD AX, B …

Code ends 答: (1)10 (2)0 (4)260 (5)50

7、设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列。 答:

MOV BX, [2000H] MOV AX, [2000H+2] MOV ES, AX MOV AX, ES:[BX]

8、执行下列指令序列后,AX寄存器中的内容是什么? TABLE DW 10,20,30,40,50 RETURN DW 3

MOV BX,OFFSET TABLE ADD BX,RETURN MOV AX,[BX] 答: 1E00

9、指出下列指令的错误:

MOV AH,BX ; MOV [BX],[SI] MOV AX,[ SI ][ DI ] ; MOV CS,AX CMP 15,BX ; CMP OP1,OP2 (OP1,OP2是已定义的字节变量) PUSH BL ; CMP AX,OP1

POP CS; MOV BYTE PTR[BX], 1000 答:

(1)分辨是单操作数还是双操作数;

(2)如果是双操作数,那么它是根据什么寻址方式; (3)双操作数的目的操作数不能是立即数;

(4)两个操作数中必须有一个是寄存器(除了立即寻以外); (5)双操作数中,代码段CS不能做目的操作数; (6)最后检查两个操作数的类型是否匹配;

(7)如果是单操作数,栈操作都是以字为单位(16位寄存器和16位地址); (8)单操作数中,代码段CS不能做目的操作数;

10、在TABLE数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表示如下:

TABLE DW 23, 36, 2, 100, 32000, 54, 0 ZERO DW ?

( 1 ) 如果BX包含数组TABLE的初始地址,请编写指令将数据0传送给ZERO单元

( 2 )如果BX包含数组0在数组中的位移量,请编写指令将数据0传送给ZERO单元 答:

(1)、Mov Ax,[BX+0CH] ;利用相对寻得到数据,传送给Ax Mov ZERO,AX ;直接寻

(2)、Mov Ax,[TABLE+BX] ;寄存器的直接寻,求出数据0的位置 Mov ZERO,AX ;赋值 11、 MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 执行上述程序后,BX为多少 答:BX=OCO2DH

12、例如:现有程序段如下 XOR AX,AX MOV AX,6C5AH MOV CX,0203H RCL AH,CL XCHG CH,CL RCR AL,CL HLT(停机)

程序执行后AX=? CF=? 答:

AX=0D82DH CF=0

13、程序段1 MOV AX,147BH MOV BX,80DCH ADD AX,BX JNO L1 JNC L2 程序段2

MOV AX,99D8H MOV BX,9847H SUB AX,BX JNC L3 JNO L4

上述两个程序段执行后,分别转移到哪里 答:转移到L3

14、执行下列程序: MOV AX,0 MOV BX,1 MOV CX,100 A: ADD AX,BX INC BX LOOP A HLT

执行后的结果为(BX)=?(AX)= 答:(BX)=101 (AX)=5050

15、分析下列程序段指出程序完成的功能和运行的结果。 MOV AL,28H MOV AH,0 SAL AX,1 MOV BX,AX SAL AX,1 SAL AX,1 ADD AX,BX

该程序段完成的功能是什么? 答:对AL的内容乘以10 程序运行后AX为多少? 答:400

16、分析下面程序段,回答问题: MOV AX,5C8FH MOV BX,0AB8FH XOR AX,BX XOR AX,BX

问:AX=?,BX=?,CF=?

答:AX=5C8FH ,BX=0AB8FH ,CF=0

10、分析下面程序段,回答问题: MOV CX,DX NOT CX

ADD CX,DX INC CX

问CX=?ZF=? 答:

CX=0 ;ZF=1

17、现有程序段如下:

MOV AX,01H MOV BX,02H MOV CX,03H DON:INC AX ADD BX,AX SHR AX,1 LOOP DON HLT

该程序段完成的功能是什么? 答:BX+6

程序运行后AX、BX为多少? 答:BX=08H ,AH=01H

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

Top