8086汇编语言编写,键盘输入4位16进制数,屏幕输出对应的十六进制数,十进制数和二进制数.
程序中,如是字符‘A(41H=1000001B)~F(46H=1000110B)’的话, 执行AND AL, 0FH 后,将化为0001B~0110B (十进制1-6), 而数值0AH=十进制10 D,与0001B相差为9,所以需跟上 ADD AL, 9 进行校正. 另程序中,DEL CH 应为DEC CH 之误.
#include
int main()
{
int x,s=0;
printf("input 4 digit hex
");
scanf("%4x",&x);
printf("your input hex is: %#x == decimal: %d
",x,x);
s = (x & 0x000f)+ ((x & 0x00f0)>>4) + ((x & 0x0f00)>>8)+ ((x &
0xf000)>>12);
printf("sum=%#x decimal:%d
",s,s);
return 0;
}
例子:
input 4 digit hex
1f1f
your input hex is: 0x1f1f == decimal: 7967
sum=0x20 decimal:32
dseg segment
errmsg db 0dh,0ah,'Input invalid char$'
crlf db 0dh,0ah,'$'
dseg ends
assume cs:cseg, ds:dseg
cseg segment
start:
mov ax, dseg
mov ds, ax
call readhex ;read number in (bx)
mov ah,9
lea dx, crlf
int 21h
call printHex
mov ah,9
lea dx, crlf
int 21h
mov ax, bx
call printDec
mov ah,9
lea dx, crlf
int 21h
call printBin
mov ax,4c00h
int 21h
printBin proc near
mov cx, 16
mov ah,0eh
b0:
rol bx, 1
mov al, bl
and al, 1h
add al, 30h
int 10h
loop b0
mov al,'B'
int 10h
ret
printBin endp
printDec proc near
push bx
xor cx, cx
mov bx, 10
d0:
xor dx, dx
div bx
xor dx, 0e30h
push dx
inc cx
cmp ax, 0
jnz d0
d1:
pop ax
int 10h
loop d1
mov al,'D'
int 10h
pop bx
ret
printDec endp
printHex proc near
mov ch,4
mov cl,4
mov ah,0eh
h0:
rol bx, cl
mov al,bl
and al,0fh
cmp al,9
jl h1
add al,7h
h1:
add al,30h
int 10h
dec ch
jnz h0
mov al,'H'
int 10h
ret
printHex endp
readhex proc near
mov bx,0 ;result
mov ch,4
mov cl,4
mov ah,1
$0:
int 21h
cmp al,'0'
jl err0
cmp al,'9'
ja $1
jmp $9
$1:
cmp al, 'A'
jl err0
cmp al,'F'
ja $2
sub al,7h
jmp $9
$2:
cmp al,'a'
jl err0
cmp al,'f'
ja err0
sub al,27H
$9:
sub al,30h
shl bx, cl
add bl, al
dec ch
jnz $0
jmp $8
err0:
lea dx, errmsg
mov ah,9
int 21h
$8:
ret
readhex endp
cseg ends
end start
用汇编语言编写:由键盘输入两个整数val1和val2,输出稍大于val1且是val...
===; 键盘输入数值数组子程序(数组名为array,元素个数存放在num中) INPUTNUM PROC NEAR ; 输入的数据以一个空格分隔,以回车符结束输入 LEA DI,ARRAY ;将数组第一个元素的有效地址置入DI MOV WORD PTR[NUM],0 STIN: MOV AX,0 PUSH AX AGAIN1...
(汇编语言)键盘输入五个十进制数,然后求和用十进制输出
data segment d1 db 20 dup(0)data ends stack segment db 128 dup(0)stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax lea di,d1 mov cx,5 l0:mov ah,1 ;输入数为一位数字连续输入,多位数字时稍加改变即可 int 21h mov [di],al inc ...
如何设计16X16点阵汇编程序
DB 030H,0f8H,000H,080H,080H,080H,0fcH,080H,080H,090H,088H,08cH,086H,084H,000H,000H;;江",0 DB 040H,000H,04FH,0FEH,048H,014H,048H,024H,048H,044H,07FH,084H,048H,004H,048H,004H;DB 048H,004H,07FH,084H,048H,044H,048H,044H,048H,044H,04FH,0FEH,...
编写汇编语言程序,要求对键盘输入的大写字母用对应的小写字母显示出来...
BX JMP LP1 ;继续输入 LP2:CMP BX, 0 JNZ EXIT MOV DX, OFFSET MESSAGE2 MOV AH, 9 ;显示NON INT 21H ;--- EXIT:MOV AH, 4CH ;结束程序 INT 21H CODE ENDS END START
求答案:试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母...
NAME TURN DSEG SEGMENT A DB 'PLEASE INPUT (a~z):','$'B DB 0AH,0DH,'$'DSEG ENDS SSEG SEGMENT STACK DB 90H DUP(?)SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEG START:MOV AX,DSEG MOV DS,AX MOV DX,OFFSET A\/\/\/提示输入 MOV AH,09H INT 21H MOV AH,01H I...
汇编语言 通过键盘输入0~9数字 按0退出 按1~9用该值乘以100做延时_百度...
输入1~9,则延时1~9秒。 CODE SEGMENT ASSUME CS:CODE ORG 100H START: PUSH CS POP DS PUSH CS POP ES @0: MOV AH,15 INT 10H MOV AH,0 INT
汇编语言 键盘输入两个数相乘
AX ;出口参数必须是DL或者DX int 21H mov ah,4ch int 21hcode ends end start这个程序我没有在电脑上运行,你剪切下来再电脑上试一下看是不是正确的,我也是汇编的初学者,如果有写得不周到的地方请谅解、、、
用汇编语言编写一个51单片机程序,实现电子秒表功能
;===时间子程序=== ;输入:"30H、31H、32H";输出:无 ;实现的功能:分、秒、百分之秒的计算。;=== SHIJIAN:DJNZ R2,TIAOCHU MOV R2,#5 INC MIAO0 MOV R3,MIAO0 CJNE R3,#100,TIAOCHU MOV MIAO0,#00 INC MIAO MOV R3,MIAO CJNE R3,#60,TIAOCHU MOV ...
用汇编语言编写10个任意数相加求和的乘坐
键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中); 可以是负数 INPUTNUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF ; 对数组@array清零 MOV CX,100 MOV AX,0...
汇编语言编写一个子程序,将键盘输入的十进制数字分别转换为大写的英文字...
;将(0~9)分别转化为大写的英文字符A~J。对应关系是0转换为A;1转换为B;2转换为C;...依次类推 ;。主程序的功能是接收键盘输入的字符。每接收一个阿拉伯数字后就调用数码转换子程序,从而在屏幕;上显示转换后的大写英文字符 ;用MASM5.0编译通过,回车结束程序 data segment CRLF DB 0dh,0ah,...