汇编程序
- 格式:doc
- 大小:99.50 KB
- 文档页数:7
1 1..显示“hello!”
DATA SEGMENT
BUF DB 'Hello ! $'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.在数据段定义了2个变量BUF1,BUF2,各保存了10个ASCII字母,比较BUF1,BUF2的大小,如果BUF1〉BUF2,则AX=1,否则AX=0。
DATA SEGMENT
BUF1 DB 'AbCDeFG12@'
BUF2 DB 'AbSDGFJSDG'
X1 DW 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
STAR:MOV AX,DATA
MOV DS,AX
MOV CX,10
XOR AX,AX
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
P1:MOV BL,[SI]
CMP BL,[DI]
JA EXIT2
JL EXIT1
INC SI
INC DI
LOOP P1
JMP EXIT1
EXIT2:MOV AX,1
EXIT1:MOV X1,AX
MOV AH,4CH INT 21H
CODE ENDS
END STAR
3.把字符串中的小写字母变成大写字母。
DATA SEGMENT
BUF DB 'AbcDeFG12@'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
STAR:MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV SI,OFFSET BUF
P1:MOV AL,[SI]
CMP AL,'a'
JB EXIT
CMP AL,'z'
JA EXIT
SUB AL,20H
MOV [SI],AL
EXIT:INC SI
LOOP P1
MOV AH,4CH
INT 21H
CODE ENDS
END STAR
4.任意定义10个字节的整数,将它们全部增加1,并使用DEBUG查看结果。.
DATA SEGMENT
BUF1 DB 0,1,2,3,4,5,6,7,8,9
; 将BUF1+1后复制到BUF2;
BUF2 DB 10 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG:MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
P1:MOV AL,[SI]
ADD AL,1
2 MOV [DI],AL
INC SI
INC DI
LOOP P1
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
5.两个整型变量BUF1和BUF2(10个字节),编程完成:BUF1=BUF1+BUF2
DATA SEGMENT
BUF1
DB 01H,23H,45H,67H,89H,0ABH,0,0,0,0
BUF2
DB 01H,02H,03H,04H,05H,06H,7,8,9,0AH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
CLC (标志寄存器清零)
P1:MOV AL,[DI]
ADC [SI],AL
INC SI
INC DI
LOOP P1
MOV AH,4CH
INT 21H
CODE ENDS
END START
6.在数据段定义了2个变量BUF1,BUF2,各保存了10个ASCII字母,比较BUF1,BUF2的大小,如果BUF1〉BUF2,则AX=1,否则AX=0。
DATA SEGMENT
BUF1 DB 'AbCDeFG12@'
BUF2 DB 'AbSDGFJSDG'
X1 DW 0
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA
STAR:MOV AX,DATA
MOV DS,AX
MOV CX,10
XOR AX,AX
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
P1:MOV BL,[SI]
CMP BL,[DI]
JA EXIT2
JL EXIT1
INC SI
INC DI
LOOP P1
JMP EXIT1
EXIT2:MOV AX,1
EXIT1:MOV X1,AX
MOV AH,4CH
INT 21H
CODE ENDS
END STAR
思考题:
1.在数据段定义了1个变量BUF1,保存了10个ASCII字母,统计其中字母'A'的个数,并保存在变量X1。用DEBUG查看结果.
7.从键盘上任意输入一串字符,将其中数字字符、字母和其他符号分别显示出来。
DATA SEGMENT
BUF DB 100
DB ?
DB 100 DUP(?)
STR1 DB 0AH,0DH,'Number:',100 DUP(?)
STR2 DB 0AH,0DH,'Char:',100 DUP(?)
STR3 DB 0AH,0DH,'Other:',100 DUP(?)
CR DB 'Input:$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG:MOV AX,SEG BUF
MOV DS,AX
MOV SS,AX
3 MOV DX,OFFSET CR
MOV AH,9
INT 21H
MOV DX,OFFSET BUF
MOV AH,10
INT 21H
MOV BX,OFFSET BUF+2
MOV SI,OFFSET STR1+9
MOV DI,OFFSET STR2+7
MOV BP,OFFSET STR3+8
MOV CL,BUF+1
XOR CH,CH
P1:MOV AL,[BX]
CMP AL,'0'
JB NEXT1
CMP AL,'9'
JA NEXT1
MOV [SI],AL
INC SI
JMP NEXT
NEXT1:CMP AL,'A'
JB NEXT2
CMP AL,'Z'
JA NEXT2
MOV [DI],AL
INC DI
JMP NEXT
NEXT2:CMP AL,'a'
JB NEXT3
CMP AL,'z'
JA NEXT3
MOV [DI],AL
INC DI
JMP NEXT
NEXT3:MOV [BP],AL
INC BP
NEXT:INC BX
LOOP P1
MOV BYTE PTR [SI],'$'
MOV BYTE PTR [DI],'$'
MOV BYTE PTR [BP],'$'
MOV DX,OFFSET STR1
MOV AH,9
INT 21H MOV DX,OFFSET STR2
MOV AH,9
INT 21H
MOV DX,OFFSET STR3
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
8.从键盘输入一串字符,然后按ASC码值从小到大排序输出。
DATA SEGMENT
BUF DB 100
DB ?
DB 100 DUP(?)
CR DB 0AH,0DH,'$'