(2) CMP BX, AX JG EXCEED (3) CMP BX,AX JGE EXCEED (4) CMP CX,0 JZ ZERO
(5) CMP BX,AX JZ EQ (6) CMP BX,AX JLE EQSMA (7) CMP CX,5678H JZ EQ (8) CMP DX,CX JB EQSM (9) ADD AX,0 JNS ABC
(10) ADD AX,0 JS ABC1
12.编写程序段,实现十六进制数12345678H与76543210H相减运算,运算结果存入DX、AX中,其中DX存放高位。
解:参考程序段如下:
MOV AX,5678H SUB AX,3210H MOV DX,1234H SBB DX,7654H HLT 13.编写程序段,实现十进制数12345678与76543210相加运算,运算结果用BCD码表示,并存入DX、AX中,其中DX存放高位。
解:MOV AL,78H
ADD AL,10H DAA
MOV BL,AL MOV AL,56H ADC AL,32H DAA
MOV AH,AL MOV AL,34H ADC AL,54H DAA
MOV DL,AL MOV AL,12H ADC AL,76H DAA
MOV DH,AL
MOV AL,BL HLT
14.编写程序段,将附加段中1000H单元开始的100字节单元清零。 解:参考程序段如下:
MOV CX,0064H MOV DI,1000H CLD
MOV AL,00H REP STOSB HLT 15.编写程序段,将数据段中1000H单元开始的100字节单元均存放23H。 解:参考程序段如下:
MOV CX,0064H MOV AX,DS MOV ES,AX MOV DI,1000H CLD
MOV AL,23H REP STOSB HLT
第四章 汇编语言源程序设计
1.画出数据段汇编后相应存储单元中的内容并标出存储单元的逻辑地址。 DATA SEGMENT ORG 0100H
ABC0 EQU 78H ABC DB 09H,-2,45H, 2 DUP(01H,?),‘AB’ ABC1 DW -2, 34H+ABC0,$ ABC2 DD 12H ABC3 DW ABC DATA ENDS 解:
DS:0100H DS:0101H DS:0102H DS:0103H DS:0104H DS:0105H DS:0106H DS:0107H DS:0108H DS:0109H DS:010AH DS:010BH DS:010CH DS:010DH DS:010EH DS:010FH DS:0110H DS:0111H DS:0112H DS:0113H DS:0114H
ABC→ ABC1→ ABC2→ ABC3→
09H FEH 45H 01H - 01H - 41H 42H FEH FFH ACH 00H 0DH 01H 12H 00H 00H 00H 00H 01H 2.设程序中的数据定义如下: PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ? PLENTH EQU $-PARTNO
问PLENTH的值为多少?它的含义是什么? 解:PLENTH的值为22(16H)。表示当前位置与PARTNO之间有22个字节空间。 3.假设程序中的数据定义如下: LNAME DB 30 DUP(?)
ADDRESS DB 30 DUP(?) CITY DB 15 DUP(?) CODE_LIST DB 1,7,8,3,2
(1)用一条MOV指令将LNAME的偏移地址放入AX; (2)用一条指令将CODE_LIST的头两个字节的内容放入SI:
(3)写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。 解:(1)MOV AX,OFFSET LNAME (2)MOV SI,WORD CODE_LIST
(3)CODE_LENGTH EQU $-CODE_LIST
4.执行下列程序段后,AX、BX的内容各是什么?
MOV AX,0001H MOV BX,8000H NEG AX MOV CX,4 AA:SHL AX,1
RCL BX,1 LOOP AA HLT
解:AX=0FFF0H,BX=000FH 5.阅读以下程序,回答问题 DATA SEGMENT
ABC DB 90H,12H,43H,56H,04H,01H
COUNT EQU $-ABC RESULT DW ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:PUSH DS
MOV AX,DATA
MOV DS,AX XOR AX,AX
MOV CX,COUNT LEA SI,ABC LEA DI,RESULT AA:MOV BL,[SI]
INC SI
CMP BL,80H JC NEXT1 NEG BL
NEXT1:ADD AL,BL
ADC AH,00H LOOP AA MOV [DI],AX MOV AH,4CH