今天不回家在线观看:三个汇编初级问题望高手们解答

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 18:41:57
1.实现循环结构的基本程序代码
2.实现分支结构的基本程序代码
3.熟悉几个常用的输入、输出中断
望各位大大们给出准确简捷的答案 谢谢大大

C++
for(int i=0; i<2; i++){
//循环2次
}
分支:
if(条件){
if(条件){//分支
}
}

windows下还是dos下?

功能是:在键盘上连续输入10个两位数,排序输出
源程序:(内含循环结构)
DATA SEGMENT
SR1 DB 'Please input ten numbers: $'
SR2 DB 'Make them in order is: $'
BUF DB 30 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA DI,BUF
MOV CX,3
PUSH CX
LEA DX,SR1
CALL OUTPUT ;输出字符串1
L1:
MOV AH,01H
INT 21H ;输入高位
CALL STO1
MOV AH,01H ;输入低位
INT 21H
CALL STO2
CALL BLANK
MOV DX,0
LOOP L1 ;没有输完3个两位数,则继续输入

CALL NR ;换行

POP CX
DEC CX ;外循环次数为CX
MOV BX,0
L2:
PUSH CX ;保存外循环次数
MOV SI,1
L3:
MOV AL,BUF[BX]
CMP AL,BUF[BX+SI] ;比较AL和下一个单元内容
JB NEX
XCHG AL,BUF[BX+SI] ;保证AL为最小值
MOV BUF[BX],AL ;保存比较后的最小值
NEX:
ADD SI,1 ;内循环指针加1,指向下一个数
LOOP L3
ADD BX,1 ;外循环指针加1,指向下一个数
POP CX ;取回外循环次数
LOOP L2 ;外循环次数不为0,则继续比较

LEA DX,SR2
CALL OUTPUT ;输出字符串2

LEA DI,BUF
MOV CX,3
L4:
PUSH CX
MOV BL,[DI]
MOV DL,BL
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,02H ;输出高位
INT 21H
AND BL,0FH
MOV DL,BL
ADD DL,30H
MOV AH,02H ;输出低位
INT 21H
INC DI
POP CX
CALL BLANK
LOOP L4 ;输出完则退出

MOV AH,4CH ;返回DOS
INT 21H

STO1 PROC ;输出字符串1
PUSH CX
SUB AL,30H
MOV DL,AL
MOV CL,4
SHL DL,CL
POP CX
RET
STO1 ENDP
STO2 PROC ;输出字符串2
SUB AL,30H
OR DL,AL
MOV [DI],DL
INC DI
RET
STO2 ENDP

OUTPUT PROC ;9号功能
MOV AH,09H
INT 21H
RET
OUTPUT ENDP

BLANK PROC ;输出空格
MOV DL,20H
MOV AH,02H
INT 21H
MOV DX,0
RET
BLANK ENDP

NR PROC ;换行
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
RET
NR ENDP

CODE ENDS ;结束
END START