汇编语言程序实例 第一份:用汇编语言对4位10进制数加密。密码是0123456789对应为9082746315。 DATA SEGMENT
TABLE DB 39H,30H,38H,32H,37H,34H,36H,33H,31H,35H;密码表
RESULT DB 4 DUP(?);四位十进制数对应的密码
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA BX,TABLE
LEA DI,RESULT
MOV AX,1234;已知的四位十进制数,以下分别求四位十进制数位,并将密码存入RESULT中
MOV SI,1000
CALL NUMBER
MOV SI,100
CALL NUMBER
MOV SI,10
CALL NUMBER
MOV SI,1
CALL NUMBER
LEA DI,RESULT;在屏幕上依次显示四位加密后的十进制数
MOV CX,4
NEXT:
MOV DL,[DI]
MOV AH,2H
INT 21H
INC DI
LOOP NEXT
;按任意键退出
mov ah,1
int 21h
MOV AX,4C00H
INT 21H
MAIN ENDP
NUMBER PROC NEAR
MOV DX,0
DIV SI
MOV SI,DX
XLAT
STOSB
MOV AX,SI
RET
NUMBER ENDP
CODE ENDS
END MAIN
第二份:设有100个学生的成绩存放在RECORD为首地址的字节数据区中,试编写分支程序分别统计成绩为60~69分,70~79分,80~89分,90~99分,100分的人数(假设成绩都及格),分别存放在G6,G7,G8,G9,G10单元中.
data segment
record db 100 dub (?)
g6 db 0
g7 db 0
g8 db 0
g9 db 0
g10 db 0
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea si,record
mov cx,100
next:
mov al,[si]
cmp al,60
jb nextn
cmp al,70
jnb next7
inc g6
jmp nextn
next7:
cmp al,80
jnb next8
inc g7
jmp nextn
next8:
cmp al,90
jnb next9
inc g8
jmp nextn
next9:
cmp al,100
jnb next10
inc g9
jmp nextn
next10:
jne nextn
inc g10
nextn:
inc si
loop next
mov ah,1
int 21h
mov ax,4c00h
int 21h
code ends
end start
第三份:若自BLOCK开始的内存缓冲区中,有100个带符号的十六进制数,希望找到其中最大的一个值,并将它放到MAX单元中 解:程序流程图如图所示。
MOV BX,OFFSET BLOCK
MOV AX,[BX] INC BX INC BX
MOV CX,99 AGAIN:
JG NWXT MOV AXNEXT:
INC BX DEC CX JNE AGAIN MOV MAX HLT
CMP AX,[BX] ,[BX] ,AX INC BX
汇编语言程序实例 第一份:用汇编语言对4位10进制数加密。密码是0123456789对应为9082746315。 DATA SEGMENT
TABLE DB 39H,30H,38H,32H,37H,34H,36H,33H,31H,35H;密码表
RESULT DB 4 DUP(?);四位十进制数对应的密码
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA BX,TABLE
LEA DI,RESULT
MOV AX,1234;已知的四位十进制数,以下分别求四位十进制数位,并将密码存入RESULT中
MOV SI,1000
CALL NUMBER
MOV SI,100
CALL NUMBER
MOV SI,10
CALL NUMBER
MOV SI,1
CALL NUMBER
LEA DI,RESULT;在屏幕上依次显示四位加密后的十进制数
MOV CX,4
NEXT:
MOV DL,[DI]
MOV AH,2H
INT 21H
INC DI
LOOP NEXT
;按任意键退出
mov ah,1
int 21h
MOV AX,4C00H
INT 21H
MAIN ENDP
NUMBER PROC NEAR
MOV DX,0
DIV SI
MOV SI,DX
XLAT
STOSB
MOV AX,SI
RET
NUMBER ENDP
CODE ENDS
END MAIN
第二份:设有100个学生的成绩存放在RECORD为首地址的字节数据区中,试编写分支程序分别统计成绩为60~69分,70~79分,80~89分,90~99分,100分的人数(假设成绩都及格),分别存放在G6,G7,G8,G9,G10单元中.
data segment
record db 100 dub (?)
g6 db 0
g7 db 0
g8 db 0
g9 db 0
g10 db 0
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea si,record
mov cx,100
next:
mov al,[si]
cmp al,60
jb nextn
cmp al,70
jnb next7
inc g6
jmp nextn
next7:
cmp al,80
jnb next8
inc g7
jmp nextn
next8:
cmp al,90
jnb next9
inc g8
jmp nextn
next9:
cmp al,100
jnb next10
inc g9
jmp nextn
next10:
jne nextn
inc g10
nextn:
inc si
loop next
mov ah,1
int 21h
mov ax,4c00h
int 21h
code ends
end start
第三份:若自BLOCK开始的内存缓冲区中,有100个带符号的十六进制数,希望找到其中最大的一个值,并将它放到MAX单元中 解:程序流程图如图所示。
MOV BX,OFFSET BLOCK
MOV AX,[BX] INC BX INC BX
MOV CX,99 AGAIN:
JG NWXT MOV AXNEXT:
INC BX DEC CX JNE AGAIN MOV MAX HLT
CMP AX,[BX] ,[BX] ,AX INC BX