汇编语言程序段
NEXT2: MAIN CODE
MOV SP,OFFSET TOP
PUSH DS
XOR AX,AX
PUSH AX
MOV AX.DATA
MOV DS,AX
MOV ES,AX
LEA SI,LIST
LOADSW
MOV CX,AX
MOV DI,SI
XOR BX,BX
LODSW
CMP AX,0
JZ
NEXT2
STOSW
ቤተ መጻሕፍቲ ባይዱ
9.下面程序段打印文件 FILE.TXT
┆
FILEN DW “FILE.TXT”,0
BUF DB
?
┆
MOV DX,SEG FILEN
MOV DS,DX
MOV DX,OFFSET FILEN
MOV AH,3D00H
INT 21H
JC
ERROR
MOV BX,AX
AGAIN: MOV CX,1
LEA DX,BUF
┆
D1
DD
12345678H
D2
DD
9ABCDEF0H
D3
DD
?
┆
MOV DX,D1
MOV AX,D1+2
MOV BX,D2
MOV CX,D2+2
ADD AX,CX
ADC DX,BX
MOV D3,AX
MOV D3+2,DX
┆
3.下面过程将 BX 的值以 16 进制形式显示出来
p1
proc near
push cx
push dx
mov ch,4
rotate: mov cl,4
rol
bx,cl
mov al,bl
and al,0fh
add
al,30h
cmp al,9
jbe
next
add
al,7
next: mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
pop dx
pop cx
汇编语言程序段
1.典型 EXE 程序 DATA SEGMENT
;在这一段内定义数据 DATA ENDS STACK SEGMENT STACK
DW 100H DUP(?) TOP LABEL WORD STACK ENDS CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE MAIN PROC FAR
pop ax
int 20h
p1
endp
5.下面过程将 BX 的值以 2 进制形式显示出来
p1
proc near
jmp begin
begin: push ax
push cx
push dx
mov cx,16
rotate: rol
bx,1
jc
one
mov dl,30h
jmp disp
one: mov dl,31h
MOV AH,3FH
INT 21H
JC
ERROR
CMP AX,0
JE
NEXT
MOV DL,BUF
MOV AH,2
INT 21H
JMP AGAIN
NEXT:
┆
ERROR: ;出错处理
10.下面过程从键盘输入一个 1~65535 间的 10 进制数(输入非数字结束),并将其值保存到寄
存器 BX。
P
PROC NEAR
DATA
ENDS
STACK
SEGMENT STACK
DW 100H DUP(?)
TOP
LABEL WORD
STACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN
PROC FAR
MOV AX,STACK
MOV SS,AX
NEXT1:
disp: mov ah,2
int 21h
loop rotate
pop dx
pop cx
pop ax
int 20h
p1
endp
6.数据段地址 LIST 开始存储一组字数据,其中首元素为数组长度,下列程序删除数组中的
“零”元素。
DATA
SEGMENT
LIST
DW 10,23,-51,0,12,0,0,76,0,-100,3200
DISP: MOV AH,2
INT 21H
┆
8. 下面程序段处理 D1、D2 所存储的数据,求程序输出结果
┆
D1
DW -1
D2
DW 1
DISP0: DISP:
┆
MOV MOV CMP JL MOV JMP MOV MOV INT ┆
AX,D1 DX,D2 AX,DX DISP0 DL,”+” DISP DL,”-” AH,2 21H
rol
dx,cl
mov al,dl
and al,0fh
xlat
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
pop dx
pop cx
pop ax
int 20h
p1
endp
4.下面过程将 BX 的值以 16 进制形式显示出来
p1
proc near
jmp begin
begin: push ax
PUSH AX
PUSH CX
PUSH DX
XOR BX,BX
AGAIN: MOV AH,1
INT 21H
CMP AL,30H
JL
FINISH
CMP AL,39H
JG
FINISH
AND AL,0FH
XOR AH,AH
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
OR
DX,DX
JNZ FINISH
INC BX
LOOP NEXT1
MOV LIST,BX
RETF
ENDP
ENDS
END MAIN
7. 下面程序段处理 D1、D2 所存储的数据,求程序输出结果
┆
D1
DW -1
D2
DW 1
┆
MOV AX,D1
MOV DX,D2
CMP AX,DX
JA
DISP0
MOV DL,”+”
JMP DISP
DISP0: MOV DL,”-”
MOV AX,STACK MOV SS,AX LEA SP,TOP PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX ;用户程序 RETF MAIN ENDP CODE ENDS END MAIN
2.下面程序段计算两个 32 位数 D1、D2 相加,把和存入 D3(不考虑溢出)
ADD BX,AX
JMP AGAIN
FINISH: POP DX
POP CX
POP AX
RET
P
ENDP
jmp begin
table db
"0","1","2","3","4","5","6","7"
db
"8","9","A","B","C","D","E","F"
begin: push ax
push cx
push dx
mov dx,bx
mov bx,offset table
mov ch,4
rotate: mov cl,4