实验1
1.略
2.
1、略
2、注意16进制转换10进制
3、无法改变,应为ROM具有‘只读’属性
4、B8100H单元为彩色字符显存,在此单元内写入数据直接会显示在显示屏上
实验2
1、略
2、
1.
AX= C0EAH
AX= C0FCH
BX= 30F0H
BX= 6021H
SP= 00FE 220FE C0FCH
SP= 00FC 220FC 6021H
SP= 00FE 6021H
SP= 0100 C0FCH
SP= 00FE 220FE 30F0H
SP= 00FC 220FC 2F31H
2.
解:t命令为单步中断,在执行的时候CPU会保护现场,即按顺序把标志寄存器、CS、IP的值和操作数据放入栈中,此题是关于后面章节的中断问题。
实验3
1、略
2、
AX= 2000H
SS= 2000H
SP= 0
SP= AH
AX= 0
SP= CH
BX= 0
SP= EH
SP= CH
SP= AH
SP= CH
SP= EH
3、略
实验4
1、
ASSUME CS:CODE
CODE SEGMENT
MOV AX,0020H
MOV DS,AX
MOV BX,0
MOV AL,0
MOV CX,64
S: MOV DS:[BX],AL
INC BX
INC AL
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END
2、
ASSUME CS:CODE
CODE SEGMENT
MOV AX,0020H
MOV DS,AX
MOV BX,0
MOV CX,64
S: MOV DS:[BX],BL
INC BX
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END
3、
MOV AX,CS
MOV CX,17H
实验5
1、
1.不变
2.0772H、0771H、0770H
3.X-2、X-1
2、
1.不变
2.0072H、0771H、0770H
3.X-2、X-1
4.(N/16+1)*16
3、
1.不变
2.0072H、0771H、0770H
3.X-2、X-1
4、
第3能正确执行,如果不指名程序入口,编译器自动默认整个代码的第一条指令为程序的入口
5、
ASSUME CS:CODE
A SEGMENT
DB 1,2,3,4,5,6,7,8
A ENDS
B SEGMENT
DB 1,2,3,4,5,6,7,8
B ENDS
C SEGMENT
DB 0,0,0,0,0,0,0,0
C ENDS
CODE SEGMENT
START: MOV AX,A
MOV DS,AX
MOV BX,0
MOV AL,0
MOV CX,8
S: MOV AL,[BX]
ADD AL,[16+BX]
MOV [32+BX],AL
INC BX
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
6、
ASSUME CS:CODE
A SEGMENT
DW 1,2,3,4,5,6,7,8,9,0AH,0BH,0CH,0DH,0EH,0FH,0FFH
A ENDS
B SEGMENT
DW 0,0,0,0,0,0,0,0
B ENDS
CODE SEGMENT
START:MOV AX,A
MOV DS,AX
MOV BX,0
MOV CX,8
S: PUSH [BX]
ADD BX,2
LOOP S
MOV BX,0
MOV CX,8
S1: POP [20H+BX]
ADD BX,2
LOOP S1
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验6
1、略
2、
ASSUME CS:CODE,SS:STACK,DS:DATA
STACK SEGMENT
DW 0,0,0,0,0,0,0,0
STACK ENDS
DATA SEGMENT
DB '1. display '
DB '2. brows '
DB '3. replace '
DB '4. modify '
DATA ENDS
CODE SEGMENT
START: MOV AX,STACK
MOV SS,AX
MOV SP,16
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,3
MOV CX,4
S: MOV AL,[BX][SI]
AND AL,11011111B
MOV [BX][SI],AL
CMP SI,6 ;CMP比较指令,此处使用了后面学到的知识点
JE OK ;相等就跳到标号处
INC SI
JMP S
OK: MOV SI,3
ADD BX,16
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验7
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
DB '1975','1976','1977','1978','1979','1980','1981','1982','1983'
DB '1984','1985','1986','1987','1988','1989','1990','1991','1992'
DB '1993','1994','1995'
;以上是表上21年的21个字符串
DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
DD 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表上21年公司总收入的21个dword型数据
DW 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
DW 11542,14430,15257,17800
;以上是表上21年公司雇佣人数的21个word数据
DATA ENDS
TABLE SEGMENT
DB 21 DUP('YEAR SUMM NE ?? ')
TABLE ENDS
STACK SEGMENT
DB 128 DUP(0)
STACK ENDS
CODE SEGMENT
START:MOV AX,STACK
MOV SS,AX
MOV SP,128
MOV AX,DATA
MOV DS,AX
MOV AX,TABLE
MOV ES,AX
MOV BX,0
MOV BP,0
MOV SI,0
MOV CX,21
S: PUSH CX
MOV AX,WORD PTR DS:[SI]
MOV WORD PTR ES:[BX],AX
MOV AX,WORD PTR DS:[SI+2]
MOV WORD PTR ES:[BX+2],AX
MOV AX,WORD PTR DS:[SI+84]
MOV WORD PTR ES:[BX+5],AX
MOV DX,WORD PTR DS:[SI+86]
MOV WORD PTR ES:[BX+7],DX
MOV CX,WORD PTR DS:[BP+168]
MOV WORD PTR ES:[BX+10],CX
DIV CX
MOV WORD PTR ES:[BX+13],AX
AD
1.略
2.
1、略
2、注意16进制转换10进制
3、无法改变,应为ROM具有‘只读’属性
4、B8100H单元为彩色字符显存,在此单元内写入数据直接会显示在显示屏上
实验2
1、略
2、
1.
AX= C0EAH
AX= C0FCH
BX= 30F0H
BX= 6021H
SP= 00FE 220FE C0FCH
SP= 00FC 220FC 6021H
SP= 00FE 6021H
SP= 0100 C0FCH
SP= 00FE 220FE 30F0H
SP= 00FC 220FC 2F31H
2.
解:t命令为单步中断,在执行的时候CPU会保护现场,即按顺序把标志寄存器、CS、IP的值和操作数据放入栈中,此题是关于后面章节的中断问题。
实验3
1、略
2、
AX= 2000H
SS= 2000H
SP= 0
SP= AH
AX= 0
SP= CH
BX= 0
SP= EH
SP= CH
SP= AH
SP= CH
SP= EH
3、略
实验4
1、
ASSUME CS:CODE
CODE SEGMENT
MOV AX,0020H
MOV DS,AX
MOV BX,0
MOV AL,0
MOV CX,64
S: MOV DS:[BX],AL
INC BX
INC AL
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END
2、
ASSUME CS:CODE
CODE SEGMENT
MOV AX,0020H
MOV DS,AX
MOV BX,0
MOV CX,64
S: MOV DS:[BX],BL
INC BX
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END
3、
MOV AX,CS
MOV CX,17H
实验5
1、
1.不变
2.0772H、0771H、0770H
3.X-2、X-1
2、
1.不变
2.0072H、0771H、0770H
3.X-2、X-1
4.(N/16+1)*16
3、
1.不变
2.0072H、0771H、0770H
3.X-2、X-1
4、
第3能正确执行,如果不指名程序入口,编译器自动默认整个代码的第一条指令为程序的入口
5、
ASSUME CS:CODE
A SEGMENT
DB 1,2,3,4,5,6,7,8
A ENDS
B SEGMENT
DB 1,2,3,4,5,6,7,8
B ENDS
C SEGMENT
DB 0,0,0,0,0,0,0,0
C ENDS
CODE SEGMENT
START: MOV AX,A
MOV DS,AX
MOV BX,0
MOV AL,0
MOV CX,8
S: MOV AL,[BX]
ADD AL,[16+BX]
MOV [32+BX],AL
INC BX
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
6、
ASSUME CS:CODE
A SEGMENT
DW 1,2,3,4,5,6,7,8,9,0AH,0BH,0CH,0DH,0EH,0FH,0FFH
A ENDS
B SEGMENT
DW 0,0,0,0,0,0,0,0
B ENDS
CODE SEGMENT
START:MOV AX,A
MOV DS,AX
MOV BX,0
MOV CX,8
S: PUSH [BX]
ADD BX,2
LOOP S
MOV BX,0
MOV CX,8
S1: POP [20H+BX]
ADD BX,2
LOOP S1
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验6
1、略
2、
ASSUME CS:CODE,SS:STACK,DS:DATA
STACK SEGMENT
DW 0,0,0,0,0,0,0,0
STACK ENDS
DATA SEGMENT
DB '1. display '
DB '2. brows '
DB '3. replace '
DB '4. modify '
DATA ENDS
CODE SEGMENT
START: MOV AX,STACK
MOV SS,AX
MOV SP,16
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV SI,3
MOV CX,4
S: MOV AL,[BX][SI]
AND AL,11011111B
MOV [BX][SI],AL
CMP SI,6 ;CMP比较指令,此处使用了后面学到的知识点
JE OK ;相等就跳到标号处
INC SI
JMP S
OK: MOV SI,3
ADD BX,16
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验7
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
DB '1975','1976','1977','1978','1979','1980','1981','1982','1983'
DB '1984','1985','1986','1987','1988','1989','1990','1991','1992'
DB '1993','1994','1995'
;以上是表上21年的21个字符串
DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
DD 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表上21年公司总收入的21个dword型数据
DW 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
DW 11542,14430,15257,17800
;以上是表上21年公司雇佣人数的21个word数据
DATA ENDS
TABLE SEGMENT
DB 21 DUP('YEAR SUMM NE ?? ')
TABLE ENDS
STACK SEGMENT
DB 128 DUP(0)
STACK ENDS
CODE SEGMENT
START:MOV AX,STACK
MOV SS,AX
MOV SP,128
MOV AX,DATA
MOV DS,AX
MOV AX,TABLE
MOV ES,AX
MOV BX,0
MOV BP,0
MOV SI,0
MOV CX,21
S: PUSH CX
MOV AX,WORD PTR DS:[SI]
MOV WORD PTR ES:[BX],AX
MOV AX,WORD PTR DS:[SI+2]
MOV WORD PTR ES:[BX+2],AX
MOV AX,WORD PTR DS:[SI+84]
MOV WORD PTR ES:[BX+5],AX
MOV DX,WORD PTR DS:[SI+86]
MOV WORD PTR ES:[BX+7],DX
MOV CX,WORD PTR DS:[BP+168]
MOV WORD PTR ES:[BX+10],CX
DIV CX
MOV WORD PTR ES:[BX+13],AX
AD