ADD DI, 2 ADD BX, 2 POPF
LOOP AA HLT
7.要求编写完整源程序实现:求1+2+3+····+100的和,并将累加和保存在AX中。(7分)
答:程序如下:
; ------堆栈段定义,本段定义可省略 S1 SEGMENT STACK
DB 100 DUP(0) S1 ENDS
; ---------程序段定义,不可省略 C1 SEGMENT
ASSUME: CS:C1, SS:S1
START: MOV CX, 64H ;即将100给CX
XOR AX,AX CLC
A1: ADC AX,CX
LOOP A1 MOV AH,4CH INT 21H C1 ENDS
END START
8. 以NUM为首址的存储区中存有若干个字型数,其长度存于NUM1字节单元。求
出数据中的最大值,存入NUM2字单元。
41
MOV SI, OFFSET NUM MOV CX, NUM1 AA2: MOV AX, [SI] AA3: INC SI
CMP AX, [SI] JC AA2 LOOP AA2 HLT
9.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“1”的个数,统计结果送CX中
解答: START :MOV CX ,0 LOOP: SUB AX,0 JZ STP SAL AX,1 JNC NOD INC CX NOD:JMP LOOP STP:HLT
10.编一程序段,完成符号函数(-128≤x≤127):
1 (x.>0)
y= 0 (x=0) -1 (x<0)
假设x的值存放在DATAl中,y的值存放在DATA2中。 解答: START :MOV AL ,DATA1 AND AL,AL JGE BIGR MOV AL,0FFH MOV DATA2.AL HLT BIGR:JE EQUL MOV AL,1 MOV DATA2,AL
42
HLT
EQUL:MOV DATA2,AL HLT
9-1.编一程序段,实现下列功能
?1?Y??0?10?
MOV AX, X CMP AX, 0 JGE AA1 MOV BL, 0AH JMP AA3 AA1: JZ AA2 MOV AL, 01H JMP AA3 AA2: MOV AL, 0H AA3: MOV Y, AL HLT
x?0x?0 x?0
11.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X,Y和Z。试编制一完整的程序计算
X?X+Y+Z 答: X-SEG SEGMENT
43
X DW ? X-SEG ENDS Z-SEG SEGMENT Z DW ? Z-SEG EMDS Y-SEG SEGMENT Y DW ? Y-SEG ENDS CODE SEGMENT MAIN PROC FAR
ASSUME ES:Y-SEG,CS:CODE,DS:X-SEG,SS:Z-SEG START PUSH DS SUB AX AX PUSH AX
MOV AX ,Y_SEG MOV ES ,AX MOV AX,Z_SEG MOV SS,AX MOV AX,X_SEG MOV DS,AX MOV AX,DS:X MOV BX,ES:Y ADD AX BX JO OVERFLOW MOV BX ,SS:Z ADD AX,BX JO OVERFLOW MOV DS:X,AX OVERFLOW :RET MAIN ENDP CODE ENDS END START
12.读下面程序段,请问:在什么情况下,本段程序的执行结果是AH=0? BEGIN: IN AL,5FH TEST AL,80H JZ BRCHl MOV AH,0 JMP STOP BRCHl: MOV AH,0FFH
44
STOP: HLT
解答:AL中的最高位为1时。 13.读程序:
START: IN AL,20H MOV BL,AL IN AL,30H MOV CL,AL MOV AX,0 ADLOP: ADD AL,BL ADC AH,0 DEC CL JNZ ADLOP HLT 请问: (1)本程序实现什么功能? (2)结果在哪里?
解答:完成20H*30H,结果在AX中。
14.请编一程序段完成AX*l0的任务(要求不准用乘法指令做)。 解答: MOV BX,AX MOV CL 2 SHL AX, CL ADD AX,BX SHL AX ,1 15.编程序使:
(1)AX寄存器低4位清零。 (2)BX寄存器低4位置“1”。 (3)CX寄存器低4位变反。
(4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;否则l送DH。
解答 :1,AND AX ,0FFF0H 2,OR BX ,000FH 3,XOR CX ,000FH 4,TEST DL ,48H JZ LOOP MOV DH,1 HLT
LOOP :MOV DL ,0 HLT
45