汇编程序

  • 格式: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,'$'