1、打开软件Visual C++6.0,新建一个C源程序,书写C语言程序。
2、首先定义两个字符型变量,代码:char c1,c2从键盘中输入一个大写字母,代码:c1=getchar()。
3、大写字母与小写字母的ASCII值相差32。代码:c2=c1+32。将大写字母转化成小写字母。
4、输出小写字母。使用putchar()函数,可以输出一个字符型变量。代码:putchar(c2)。
5、连接编译程序。点击工具栏按钮【Compile(Ctrl+F7)】,编译程序;点击工具栏上的像感叹号的按钮【BuildExecute(Ctrl+F5)】,组建程序。
6、在程序运行窗口中,输入一个大写字母A,按回车键,即可输出一个小写字母。
datasegment
num1db03dup(?)
num2db03dup(?)
dataends
codesegment'code'
assumecs:code,ds:data
start:
movax,data
movds,ax
movsi,offsetnum1
输入一组数
movah,01h
int21h
subal,'0'
movdl,al
movcl,3
shlal,cl
shldl,1
addal,dl
mov[si],al
movah,01h
int21h
subal,'0'
add[si],al
movah,01h
int21h
movbx,offsetnum2
再输入一组数
movah,01h
int21h
subal,'0'
movdl,al
movcl,3
shlal,cl
shldl,1
addal,dl
mov[bx],al
movah,01h
int21h
subal,'0'
add[bx],al
movah,02h
movdl,0dh
int21h
movdl,0ah
int21h
把两组数求和
moval,[bx]
addal,[si]al=sum
xorah,ah
movcl,100
divcl
movbx,ax
testal,al
jz @f
addal,'0'
movdl,al
movah,02h
int21h
@@:
moval,bh
xorah,ah
movcl,10
divcl
movbx,ax
addal,'0'
movdl,al
movah,02h
int21h
addbh,'0'
movdl,bh
movah,02h
int21h
movah,4ch
int21h
codeends
endstart
inputexample:
1234<Enter>
or
0208<Enter>
扩展资料:十进制转二进制代码:
voiddectobin(intn){
intresult=0,k=1,i,temp
temp=n
while(temp){
i=temp%2
result=k*i+result
k=k*10
temp=temp/2
}
printf("%d\n",result)
}
算法分析:
在实现模2取余后需要逆序输出,这个地方通过不断乘以10来实现后一位比前一位的位数多10,不需要再通过数组或者逆序函数来实现。
CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
START:
CALL DEC_BIN
CALL BIN_HEX
call dec_bin1
call BINIDEC
MOV AH,4CH
INT 21H
RET
MAIN ENDP
DEC_BIN PROC NEAR
MOV BX,0
GET_CHAR:MOV AH,1
INT 21H
CMP AL,0DH
JE EXIT
SUB AL,30H
JL EXIT
CMP AL,9
JG EXIT
CBW
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
JMP GET_CHAR
EXIT:
mov dl,0ah
mov ah,2
int 21h
RET
DEC_BIN ENDP
BIN_HEX PROC NEAR
MOV CH,4
ROTATE:MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL DISPLAY
ADD AL,7H
DISPLAY:MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE
mov dl,0ah
mov ah,2
int 21h
RET
BIN_HEX ENDP
DEC_BIN1 PROC NEAR
MOV BX,0
GET_CHAR1:MOV AH,1
INT 21H
CMP AL,0DH
JE EXIT1
SUB AL,30H
JL EXIT1
CMP AL,9
Jle t0
SUB AL,7H
CMP AL,15
jg exit1
t0:CBW
XCHG AX,BX
mov cl,4
rol ax,cl
ADD BX,AX
JMP GET_CHAR1
EXIT1:mov dl,0ah
mov ah,2
int 21h
RET
DEC_BIN1 ENDP
BINIDEC PROC NEAR
MOV CX,1000
CALL DEC_DIV
MOV CX,100
CALL DEC_DIV
MOV CX,10
CALL DEC_DIV
MOV CX,1
CALL DEC_DIV
RET
BINIDEC ENDP
DEC_DIV PROC NEAR
MOV AX,BX
MOV DX,0
DIV CX
MOV BX,DX
CMP AL,9
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
RET
DEC_DIV ENDP
CODE ENDS
END START
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)