1
指令系统与汇编语言程序设计例
通过对部分汇编语言源程序的
阅读,提高读程序的能力。
2
程序 1
DATA SEGMENT
NAMES DB ‘TOM..’,20
DB ‘CATE’,25
DATA ENDS
该数据区在内存中的存放情况?
3
程序 2
DATA SEGMENT
A DB ‘123ABC’
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,
DS,DATA
START,MOV AX,DATA
MOV DS,AX
LEA BX,A
MOV CX,6
LP,MOV AH,2
MOV AL,[BX]
XCHG AL,DL
INC BX
INT 21H
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
4
程序 3
DATA SEGMENT
TABLE DW 3400H,5600H,2300H,4500H,
2300H,1200H,2344H,3500H
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,DS; DATA
START,MOV AX,DATA
MOV DS,AX
5
程序 3(续)
MOV BX,OFFSET TABLE
MOV SI,06H
A,JMP DWORD PTR[BX+SI+2]
……
程序执行完标号为 A的指令后:
CS=? IP=?
6
程序 4
DATA SEGMENT
STR1 DB ‘HELLO WORLD! ’
STR2 DB ‘HELLO WOOLD! ’
COUNT DB 12
FLAG DB?
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,DS,DATA,ES,DATA
7
程序 4(序)
START,MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA BX,FLAG
LEA SI,STR1
LEA DI,STR2
MOV CX,COUNT
CLD
8
程序 4(序)
REPE CMPSB
JZ NEXT1
MOV [BX],00H
JMP STOP
NEXT2,MOV [BX],0FFH
STOP,……
执行到 STOP时,SI=? DI=? CX=?
FLAG=? ZF=?
9
程序 5
DATA SEGMENT
SUM DB 8 DUP( 0)
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,DS,DATA
START,MOV AX,DATA
MOV DS,AX
LEA BX,SUM
10
程序 5(序)
MOV DX,280H
IN AL,DX
MOV CX,8
NEXT,ROR AL,1
JNC NEXT1
MOV Byte PTR[BX],0FFH
JMP NEXT2
NEXT1,MOV [BX],0
11
程序 5(序)
NEXT2,INC BX
LOOP NEXT
……
如果从 280H端口输入的是 45H,则程序执行完后
BX=? AL=?
SUM —— SUN+7的内容为:?