-
1
、统计出某数组中相邻两数之间符号变化的次数
DATA
SEGMENT
ARRAY
DB
20
DUP (?)
NUM
DB
0
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:CODE,DS:DATA
STARTUP:LEA
SI , ARRAY;
MOV
AL ,[SI]
MOV
BL,0
MOV
CX,19
AGAIN:
INC
SI
XOR
AL ,[SI]
J NS
NEXT
INC
BL
NEXT:
MOV
AL ,[SI]
LOOP
AGAIN
MOV
NUM,BL
MOV
AH ,4CH
INT
21H
CODE
ENDS
END
STARTUP
2
、乘法指令实现<
/p>
32
位二进制数与
16
< br>位二进制数相乘
MODEL
SMALL
.8086
.DATA
N1
DW
1234H
N2
DW
5678H
N3
DW
4444H
M1
DW
0
M2
DW
0
M3
DW
0
CODE
. STARTUP
MOV
AX ,N2
MUL
N3
MOV
M3,AX
MOV
M2,DX
MOV
AX,N3
MUL
N1
ADD
M2,AX
ADC
M1,DX
.EXIT
END
3
、设有
3
个自变量的变量
名及其内容如下:
V
AR1
3C46H , V
AR2
F678H , V
AR3
0059H
设计一个数据段定义这三个变量及其地址表变量
DDRTABL
DATA
SEGMENT
V
AR1
DW
3C46H
V
AR2
DW
F678H
V
AR3
DW
0059H
ADDRTABL
DD
V
AR1
DD
V
AR2
DD
V
AR3
DATA
ENDS
4
、设有
一个符号数组,共
M
个,求其中最大的数,如需要求绝对值
p>
最大应如何修改,如为无符号数,程序如何修改。
DATA
SEGMENT
M
EQU
10
DAT
DW
M DUP(?)
MAX
DW
?
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:CODE ,DS:DATA
STARUP :
MOV
AX ,DAT
MOV
MAX ,AX
CLD
LEA
SI ,DAT
MOV
CX ,M
L1:
LODSW
CMP
AX ,MAX
JNG
LAB
MOV
MAX ,AX
LAB :
LOOP
L1
MOV
AH ,4CH
INT 21H
CODE
ENDS
END
STARTUP
绝对值修改:需要在
LODSW
插入<
/p>
AND
AX ,AX
JNS
LAB1
NEG
AX
LAB1: CMP
AX ,MAX
程序初始化时
MAX
应送入
0
无符号数程序修改:
判别条件
CMP
AX ,MAX
JNG
LAB
修改为
CMP
AX,MAX
JBE
LAB
< br>5
、
编制一个程序将
20
个字节的数组分为正数和负数组,
并计算两个
数组中数据的个数
DATA
SEGMENT
DAT
DB
20
DUP (?)
PDAT DB
20
DUP(?)
PDAT DB
?
PLEN
DB
?
NDAT
DB 20
DUP (?)
NLEN
DB
?
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:CODE
,DS:DATA
STARTUP:
XOR
BX ,BX
LEA
SI ,DAT
XOR
DI,DI
CLD
MOV
CX,20
LOOP0 :
LODSB
CMP
AL,0
JGE
LOOP1
MOV
NDAT[BX] ,AL
INC
BX
JMP
LAB
LOOP1:
MOV
PDAT[DI] ,AL
INC
DI
LAB:
DEC CX
JNZ
LOOP0
MOV
PLEN ,DI
MOV
NLEN,BX
MOV
AH,4CH
INT
21H
CODE
ENDS
END
STARTUP
6
、
把从
A
开始的
8
个字节单元内容依次和从
B
开始的
8
个相应的字
节单元内容互换。
DATA
SEGMENT
A
DB
'ABCDEFGH'
B
DB
'12345678'
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:CODE ,DS:DATA
START:
MOV
AX ,DATA
MOV
DS,AX
LEA
SI
,A
LEA
DI ,B
MOV
CX,8
LP:MOV
AL ,[SI]
XCHG
AL ,[DI]
MOV
[SI], AL
INC
SI
INC
DI
LOOP
LP
MOV
AH
,4CH
INT
21H
CODE
ENDS
END
START
7
、
计算
BUF
开始的数组中的
100
个元素中非零元素的个数,
并将其
存入
COUNT
单元
,
补全指令
BUF
DB
100
DUP (?)
COUNT
DB
0
..............
STARTUP: MOV
AX,DATA
MOV
DS,AX
LEA
SI, (1)________
MOV
CX ,(2)______
CON:MOV
AL,[SI]
CMP
AL ,(3)_______
.JZ
NEXT
INC
(4)_____
NEXT:
INC
SI
LOOP
(5)______
HLT
答案:
BUF
100
0
COUNT
CON
8
、程序执行后寄存器的值:
MOV
AX,01H
MOV
BX ,02H
PUSH
BX
PUSH
AX
POP
BX
执行后
BX=
(
1
)
___
POP
AX
执行后
AX=(1)____
MOV
AX
,3F5FH
执行后
AL=(3)______
MOV
CX ,4
ROR
AL,CL
执行后
AL=(4)____
AND
AL ,0FH
执行后
AL=(5)_______
答案:
01H
02H
5FH
0F5H
05H
9
、分支程序设计实验
(
1
)显示
AL
中两位十六进制数程序:
CODE
SEGMENT
ASSUME CS:CODE
START:
MOV AL,3EH
MOV BL,AL
MOV DL,AL
MOV CL,4
SHR
DL,CL
CMP DL,9
JBE NEXT1
ADD
DL,7
NEXT1:
ADD DL,30H
MOV AH,2
INT 21H
MOV
DL,BL
AND DL,0FH
CMP DL,9
JBE
NEXT2
ADD DL,7
NEXT2:
ADD DL,30H
MOV AH,2
INT 21H
MOV
AH,4CH
INT 21H
CODE ENDS
END
START
(
2
)显示键入字符
p>
CODE
SEGMENT
ASSUME CS:CODE
START:
MOV AH,1
INT 21H
CMP
AL,0DH
JZ DONE
-
-
-
-
-
-
-
-
-
上一篇:JAVA的即时通讯源代码
下一篇:土壤温湿度传感器c程序