用8086汇编语言编写程序,接受从键盘上输入的一个两位十进制数字,这个数经过BCD码处理,以十六进制显示出
二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 点击此处将给出十进制数和8421BCD编码的对应关系表。
把30H的数取出来
分配在bx中
bh和bl两个都都加上3
把
把bh的值赋给地址为41H上,bh的值赋给40H
DISP_STR MACRO X ;宏定义.
MOV DX, OFFSET X
MOV AH, 9
INT 21H
ENDM
;----------------------
DATA SEGMENT ;数据段.
MSG1 DB 13, 10, 'Please Input : $'
MSG3 DB 13, 10, 'The HEX is : $'
x DW ? ;存放新输入数据.
DATA ENDS
;----------------------
CODE SEGMENT ;代码段.
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
;--------------------------------
IN_LOOP:
DISP_STR MSG1 ;宏调用,提示 Please Input :
;--------------------------------
MOV x, 0 ;数据清零.
_INX:
MOV AH, 1 ;输入字符.
INT 21H
;--------------------------------
CMP AL, 13 ;回车?
JE _IN_END ;是则结束输入.
CMP AL, '0'
JB IN_LOOP ;小于'0',不是数字.
CMP AL, '9'
JA IN_LOOP ;大于'9',不是数字.
SUB AL, '0'
MOV CL, AL
MOV CH, 0
MOV AX, x
MOV BX, 10 ;老数据乘以10
MUL BX
ADD AX, CX ;加上新数据.
MOV x, AX ;保存.
CMP AX, 99
JA IN_LOOP
JMP _INX
;--------------------------------
_IN_END:
DISP_STR MSG3 ;宏调用,提示 The HEX is :
MOV AX, x
MOV BX, 16
MOV CX, 0
D_1:MOV DX, 0
DIV BX
ADD DL, '0'
CMP DL, 3AH
JB ZZZ
ADD DL, 7
ZZZ:
PUSH DX
INC CX
CMP AX, 0
JNE D_1
MOV AH, 2
D_2:POP DX
INT 21H
LOOP D_2
;--------------------------------
MOV AH, 4CH
INT 21H
;--------------------------------
CODE ENDS
END START
;=====================
学汇编,要用到哪些软件
用8086汇编语言编写一个输入字符串的程序
代码如下:DSEGSEGMENTSPACESDB 20H, 20H, 20H, 20H, 24HLINEDB0DH, 0AH, 24HDSEGENDSSSEGSEGMENT PARA STACKDW 256 DUP(?)SSEGENDSCSEGSEGMENTASSUME CS:CSEG,DS:DSEGBEGIN:MOV AX, DSEGMOV DS, AXLOOP1:MOV AH, 08HINT 21H; 判断回车键MOV DL, ALCMP DL, 0DHJNE LOOP3MOV DX, ...
编写汇编语言程序,用8086指令实现两个32位无符号数相加
assume cs:csegcseg segment hextab db '0123456789ABCDEF' A dd 11118888H b dd 33339444H c dd 0start: mov ax, cseg mov ds, ax mov ax, word ptr a add ax, word ptr b mov word ptr c, ax mov ax, word ptr a+2 adc ax, word ptr b+2 mov word ptr ...
8086汇编语言编写,键盘输入4位16进制数,屏幕输出对应的十六进制数,十进...
dseg segment errmsg db 0dh,0ah,'Input invalid char$' crlf db 0dh,0ah,'$'dseg endsassume cs:cseg, ds:dsegcseg 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...
8086汇编语言小问题
别的汇编语言,我不了解。Intel 8086\/8088汇编语言编译器开始时所默认的整数进制为十进制。指令:MOV AX,25中的25,指十进制的25。可以用进制伪指令RADIX来改变默认的进制。伪指令RADIX用来设置整数的缺省进制,宏汇编开始时所默认的整数进制为十进制。该伪指令的使用格式如下:.RADIX exp 其中:伪...
8086的后缀为HEX是什么汇编语言
后缀hex的文件也是8086的汇编,hex就是16进制文件之意。
8086汇编语言简单问题
当然是 mov cs:[bx],[sp]add sp,2 但是只是形式上等同,mov cs:[bx],[sp]不能被编译,只有BX,BP,SI,DI,立即数及他们的组合可以出现在[]中,BX,BP不能同时出现,SI,DI也不能同时出现。sp可以被认为指针 int *sp;int a;...mov a,[sp]相当a=*sp;int *sp;int *a;...mov a,sp...
汇编语言中为什么要用8086的cpu进行讲解
这些就统称为80x86 在汇编语言下常提到“80x86指令集”这个术语,意思是兼容这些cpu的指令集。编语言是针对微处理器(即CPU)的,不同的微处理器其汇编语言是不同的,如INTEL8088\/8086,8051\/8031,Z80等...,C语言相对汇编语言是高级语言,你想做黑客,要学C,就从8088\/8086汇编开始吧.顺便说一下,你不...
用汇编语言编程实现输出任意10个数中的最大数最小数
8086汇编:假设该数组存放在BUF开始的内存单元中,个数N,AH中存放最大数,AL中存放最小数 MOV CX,N LEA DI,BUF MOV AL,0 MOV AH,0 L1: CMP [DI],AH JB MIN MOV AH,[DI]JMP NEXT MIN: CMP [DI],AL JAE NEXT MOV AL,[DI]NEXT:INC DI LOOP L1 ...
用8086汇编语言编写 把16进制数转化为ASCII码
code segment assume cs:code org 100hstart: jmp bbbnum dw 0FF78harray db 10,13,4 dup(?),10,13,'$'bbb: push cs pop ds push cs pop es ;以下是通过移位取出各位16进制数并放入数组array中 lea di,array add di,5 mov cx,4 mov ax,wo...
用intel8086\/8088汇编语言写的程序用什么编译器编译最好啊?
用masm或者是tasm就可以了,感觉上写8086\/8088以及80386的保护式编程用tasm比较好,写Win32Asm用masm比较好。推荐你使用8086emulator这个软件。模拟8086的,专门用来练习实模式汇编。emu8086v2.75版,还有注册机。是一个很优秀的模拟软件。很好用的,在里面你可以观察寄存器,内存,还有其他的运行内容。推荐你...
饶德骨刺: 问题非常多:1. 首先题目就有问题,不可能“接收从键盘输入的字符,以CTR+C 结束”.对于命令提示符来说,按下CTRL+C,就会强行退出这个程序,所以不可能以CTRL+C结束的.应该是按回车结束输入.2. DATA里有中文标点符号.3. ...
休宁县17595671963: 用汇编语言编写程序,从键盘接收一个字符,若该字符是大写字母显示"upper"若是小写字母显示"lower" - ?
饶德骨刺: ;------------------------------------ PRINT MACRO PARA ; 定义一个显示字符串的宏LEA DX, PARAMOV AH, 9INT 21H ENDM ;------------------------------------ DSEG SEGMENTMSG_LOWER DB ' lower', 0DH, 0AH, 24HMSG_UPPER DB ' upper', 0...
休宁县17595671963: 用8086汇编语言程序查询方式编写程序,从存储器以BUFFER为首地址,送64字节的数据给CRT,知数据端口为0008H - ?
饶德骨刺: DATASEG SEGMENT ;定义数据段 BUFFER DB 64DUP(?) DATASEG ENDS CODE SEGMENT ;代码段 ASSUME CS: CODE, DS: DATASEG START: MOV AX,DATASEG MOV DS, AX MOV CX, 64 MOV BX,BUFFER LL: MOV DX,0020H ...
休宁县17595671963: 求单片机高手编写一个串口通信接受字符程序,用汇编语言. 急急急!!!! - ?
饶德骨刺: ORG 00H AJMP MAIN ORG 23H AJMP URT ;串口中断 ORG 30HMAIN: MOV SP,#60H MOV R0,#50H MOV TMOD,#20H ; T1工作方式2 SETB EA ;开总中断 ACALL URTINIT ;串口初始化 AJMP $ ;等待串口中断URT: ;串口中断每次只...
休宁县17595671963: 使用8086汇编语言编写程序实现:将从键盘输入的小写字母转换成大写字母输出.求程序流程图? - ?
饶德骨刺: data segment chars db 200 dup(?) ;开辟200字节的缓冲区 data ends ;--------------------------------- code segment assume cs:code,ds:datastart : push ds mov ax,0 push ax mov ax,data mov ds,ax lea bx ,chars mov si,0 mov ch,0 ;----------------------...
休宁县17595671963: 用8086汇编语言写一个计算器程序.该程序输入的是10进制数.执行时,直接用键盘输入数字和运算符 - ?
饶德骨刺: 1首先用中断10把计算器的图形界面显示出来 2调用读键盘功能,读入相关的数字和符合 3把输入状态分为第一数数据,运算符,第二数据,运算,显示,几个过程 4或者直接输入,然后用二数据运算法则分析输入的表达式,并计算结果 5显示出来
休宁县17595671963: 用汇编语言写一小程序?
饶德骨刺: #include<iostream> using namespace std; void main() { int a[5],i; for(i=0;i<5;i++) { cin>>a[i]; } for(i=0;i<5;i++) cout<<a[i]; }
休宁县17595671963: 怎么用汇编语言编程将从内存A5000H单元开始的100个单元清零? - ?
饶德骨刺: 8086汇编程序如下: MOV AX, 0A500H MOV DS, AX MOV BX, 0000H;DS:BX组成物理地址A5000H MOV CX, 100;一共6个单元清0 AGAIN: MOV [BX], 00HINC BXLOOP AGAIN
休宁县17595671963: 求汇编大神解答:用汇编语言编程实现,将从键盘上接收到一串字符(字符个数≤60)以其反序显示在屏幕上. - ?
饶德骨刺: ;------------------------------ QQ SEGMENTX DB 80, ?, 80 DUP (0) ;预留80个字符的空间. QQ ENDS ;------------------------------ CC SEGMENTASSUME CS:CC, DS:QQ START:MOV AX, QQMOV DS, AX ;-------------------------LEA DX, X ;起始地址 ...
休宁县17595671963: 用汇编语言编写从键盘接收一串字符并显示且实现指定位置的插入;能删除指定位置的一个字符. - ?
饶德骨刺: 只有其多媒体指令集SEE、SEE2和Intel的MMX.汇编与机器相关,AMD的汇编大部分和Intel兼容,不过你目前大部分也只能遇到Intel的汇编指令、3DNow!指令集有区别.由于Intel设计是向下兼容的,所以匹配性可以做得很好.不过不同得机器型号必须严格匹配这是肯定得. 该回答在2006-03-14 17:37编辑器: 任何可编写ASCII文本的软件都可以 编译器: 对于INTEL系列, MASM(Microsoft) TASM(Borland)都可以,还有其他很多