DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,2
MOV SI,OFFSET B LEA DI,C L: MOV AL,[SI] XLAT
MOV [DI],AL INC SI INC DI LOOP L
MOV AH,4CH INT 21H CODE ENDS END START
5.分析下列程序,说明程序的功能。将STR中的十进制数经过查表转换成ASCII码并送BUF保存。
DATA SEGMENT
TAB DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H STR DB 3,2,7,6,8 COUNT EQU $—STR BUF DB 10 DUP(0) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX LEA BX,TAB LEA DI, BUF MOV CX,COUNT LEA SI, STR L: MOV AL,[SI] XLAT
MOV [DI],AL INC SI INC DI LOOP L
MOV AH,4CH INT 21H CODE ENDS END START
6.分析下列程序,说明程序的功能。将A中的4个字节数(00563412H)与B中的4个字节数(00316253H)相加,并将结果存放在C中。 DATA SEGMENT
A DB 12,34,56H,0 B DB 53H,62,31H,0 C DB 4 DUP(0) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,A LEA DI,B LEA BX,C MOV CX,4 CLC
L: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL INC SI INC DI INC BX LOOP L
MOV AH,4CH INT 21H CODE ENDS END START
7.按下列各小题的要求写出相应的一条汇编语言指令。
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中
(2)以BX和SI寄存器作基址变址寻址方式,把该单元中的一个字传送到AX。 (3)以SI和位移量20H作寄存器相对寻址,将该单元中的内容与CX寄存器中的内 容相加,结果存入CX寄存器中。
(4)清除AX寄存器的内容,同时清除CF标志位 (5)将字单元NUM与0B6H进行比较
(1)ADD DX,BX
(2)MOV AX,[BX+SI] (3)ADD CX,[SI+20H] (4)XOR AX,AX
(5)CMP WORD PTR NUM,0B6H 8.按下列各小题的要求使用相应的几条指令完成其操作。
(1)将偏移量为200H的存储单元中的数与300H相加,结果存入AX寄存器中 (2)比较AX寄存器中与BX寄存器中的16位有符号数,当AX中的内容大于BX中的内容时转移到L。
(3)将BUF1和BUF2中的16位数据交换
(4)测试BUF字缓冲区中第15位,如果为1则转移到P (5)将BUFI和BUF2的字相加,结果送S缓冲区
(1)MOV AX,[200H]
ADD AX,300H (2)CMP AX,BX
JG L
(3)MOV AX,BUF1
XCHG AX,BUF2 MOV BUF1,AX
(4)TEST WORD PTR BUF,8000H
JNZ P
(5)MOV AX,BUF1 ADD AX,BUF2 MOV S,AX
9.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么? SHR BX,1 SAR BX,1
SHR是逻辑右移指令,移位后空出的位补0,而SAR是算术右移指令,最高位保持不变,其他位右移一位。SHR BX,1执行后BX=411AH,执行SAR BX,1后 BX=0C11AH。
10.现有程序段如下: MOV AX,1234H MOV BX,60H ADD AX,BX
请回答 :(1)该程序段完成的功能是什么? (2)程序段执行完后AX= 。
(1)两数1234H和60H相加,结果存放在AX中。
(2)1294H 11.现有程序段如下: MOV AX,0603H MOV BL,8 AAD DIV BL 请回答 :
(1)该程序段完成的功能是什么?
(2)程序段执行完后AX= 。
(1)实现两个未压缩BCD码的除法。
(2)0707H
12.设AX=0D023H,BX=9FD0H,试分析执行完如下程序段后程序转向何处?请说明为何? ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4
JMP L5
L5,原因由同学们自己作答。
13.程序段如下: MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ADD AX,36 ADC DX,0 SUB AX,Z SBB DX,Z+2 MOV W,AX MOV W+2,DX
请回答 :(1)该程序段完成的功能是什么? (2)该程序的操作数是何类型? (3)结果存放在何处?
(1)计算X+Y+36-Z
(2)字 (3)W
14.设A为字节变量,变量中的内容分别为64H、52H;B为字节变量,变量中的内容分别为 12H、46H,现有程序段如下: