将某个十进制数ASCII码串转换为对应的二进制数汇编语言 汇编语言中 ascii码转换成二进制数的原理问题

\u8bd5\u7f16\u5199\u7a0b\u5e8f\uff0c\u5c06\u67d0\u4e2a\u5341\u516d\u8fdb\u5236\u6570ASCII\u7801\u4e32\u8f6c\u6362\u4e3a\u5bf9\u5e94\u4e8c\u8fdb\u5236\u6570\u3002

\u4e0d\u77e5\u9053\u4f60\u8981\u6c42\u7528\u4ec0\u4e48\u8bed\u8a00\u7f16\u5199\u554a\uff01\u8fd9\u91cc\u63d0\u4f9b\u4e00\u4e2aC/C++\u7a0b\u5e8f\uff0c\u5e0c\u671b\u6709\u5e2e\u52a9\u3002\u8fd9\u4e2a\u7a0b\u5e8f\u8f93\u5165\u4e32\u957f\u662f\u52a8\u6001\u7684\uff0c\u53ea\u8981\u4f60\u7684\u5185\u5b58\u591f\u7528\uff0c\u4e32\u53ef\u4ee5\u5f88\u957f\u5f88\u957f\u2026\u2026
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#include "conio.h"

void HexToBin(void){
\u3000char cx[2]="",*pinstr,*ptemp,*p;
\u3000int i,step=16,lenp=step;

\u3000if(!(p=new char[lenp+1])){
\u3000\u3000printf("\u7533\u8bf7\u52a8\u6001\u5185\u5b58\u5931\u8d25!");
\u3000\u3000exit(1);
\u3000}

\u3000printf("\u8bf7\u8f93\u5165\u4e00\u4e2a\u5341\u516d\u8fdb\u5236\u4e32!\n\u8f93\u516516\u8fdb\u5236\u4e32=");
\u3000*p=NULL;//
\u3000for(i=0;;){//
\u3000\u3000if((*cx=getch())==0xD && i){
\u3000\u3000\u3000if(!(pinstr=new char[i+1])){//i
\u3000\u3000\u3000\u3000printf("\u521b\u5efa\u5de5\u4f5c\u5185\u5b58\u7a7a\u95f4\u5931\u8d25!");
\u3000\u3000\u3000\u3000exit(1);
\u3000\u3000\u3000}
\u3000\u3000\u3000strcpy(pinstr,p);
\u3000\u3000\u3000delete [lenp+1]p;
\u3000\u3000\u3000break;
\u3000\u3000}
\u3000\u3000else if(*cx==0x8 && i){
\u3000\u3000\u3000printf("\b%c\b",' ');
\u3000\u3000\u3000*(p+--i)=NULL;
\u3000\u3000\u3000continue;
\u3000\u3000}

\u3000\u3000if(*cx>='0' && *cx='A' && (*cx&0xDF)<='F'){
\u3000\u3000\u3000strcat(p,cx);
\u3000\u3000\u3000printf("%c",*cx);//printf("i=%d\n",i);
\u3000\u3000\u3000if(++i==lenp){//256
\u3000\u3000\u3000\u3000if(!(ptemp=new char[lenp+1])){
\u3000\u3000\u3000\u3000\u3000printf("\u7533\u8bf7\u4e34\u65f6\u52a8\u6001\u5185\u5b58\u5931\u8d25!");
\u3000\u3000\u3000\u3000\u3000exit(1);
\u3000\u3000\u3000\u3000}
\u3000\u3000\u3000\u3000strcpy(ptemp,p);//printf("ptemp=%s",ptemp);
\u3000\u3000\u3000\u3000delete [lenp+1]p;
\u3000\u3000\u3000\u3000if(!(p=new char[(lenp+=step)+1])){//256
\u3000\u3000\u3000\u3000\u3000printf("\u6839\u636e\u5b57\u4e32\u957f\u5ea6\u6269\u5c55\u5185\u5b58\u5931\u8d25!");
\u3000\u3000\u3000\u3000\u3000exit(1);
\u3000\u3000\u3000\u3000}
\u3000\u3000\u3000\u3000strcpy(p,ptemp);
\u3000\u3000\u3000\u3000delete [lenp-step+1]ptemp;
\u3000\u3000\u3000}
\u3000\u3000}
\u3000}
\u3000printf("\n\u8f93\u51fa\u4e8c\u8fdb\u5236\u503c=");
\u3000for(i=0;;){
\u3000\u3000if((*cx=*pinstr++)==NULL) break;
\u3000\u3000if(*cx>='A')\u3000*cx=(*cx&0xD)-0x37;
\u3000\u3000for(char cn,j=3; j>=0; j--){
\u3000\u3000\u3000if((cn=(*cx>>j&1)+'0')=='0' && !i) continue;
\u3000\u3000\u3000i=1;
\u3000\u3000\u3000printf("%c",cn);
\u3000\u3000}
\u3000}
\u3000printf("\n\n");
}

void main(void){
\u3000HexToBin();
}

\u3000\u3000\u4e3e\u4e2a\u4f8b\u5b50 \u6570\u5b571 \u7684ASCII\u662f 31 \u7684\u4e8c\u8fdb\u5236\u662f\u201c1111\u201d\uff1b
\u3000\u3000\u800c\u6570\u5b571\u7684\u4e8c\u8fdb\u5236\u53ea\u662f \u201c1\u201d\uff1b
\u3000\u3000ASCII\u7801\u662f\u4e00\u79cd\u7f16\u7801\u65b9\u5f0f\uff0c\u5982\u679c\u53d6\u5f97\u4e00\u4e2a\u201c1111\u201d\u7684ASCII\u7801\uff0c\u90a3\u4e48\u7cfb\u7edf\u5c31\u4f1a\u81ea\u52a8\u89e3\u6790\u4e3a\u6570\u5b571\u3002
\u3000\u3000\u6570\u636e\u7c7b\u578b\u8868\u793a\u6570\u5b57\u7684\u7c7b\u578b\u5982int,double \u7b49\u7c7b\u578b\u5728\u5185\u5b58\u4e2d\u662f\u4ee5\u6362\u7b97\u7684\u4e8c\u8fdb\u5236\u5b58\u7684\uff0c\u800c\u5b57\u7b26\u7c7b\u578b\u7b49\u5728\u5185\u5b58\u4e2d\u662f\u4ee5ASCII\u5b58\u7684\uff0c\u8fd9\u4e2a\u901a\u8fc7\u67e5ASCII\u5f97\u5230\u76f8\u5e94\u7684\u4e8c\u8fdb\u5236\uff0c\u7136\u540e\u5b58\u653e\u4e8e\u5185\u5b58\u3002
\u3000\u3000\u6bd4\u5982\uff1a32767 \u5f53\u4f5cint\u578b \u4e3a\u6574\u6570\uff0c\u5229\u7528\u96642\u53d6\u4f59\u6cd5\u5f97\u5230\u76f8\u5e94\u7684\u4e8c\u8fdb\u5236\u6570\u5b58\u4e8e\u5185\u5b58\uff08\u672c\u6765\u5e94\u8be5\u5b58\u8865\u7801\uff0c\u4f46\u662f\u6b63\u6570\u7684\u8865\u7801\u548c\u539f\u7801\u76f8\u540c\uff09\u6240\u5360\u7684\u5185\u5b58\u7a7a\u95f4\u8ddf\u5176\u5bf9\u5e94\u7684\u6570\u636e\u7c7b\u578b\u6709\u5173\uff0c\u53ef\u80fd\u8fd8\u4e0e\u673a\u5668\u6709\u5173\uff0c
\u3000\u3000\u800c32767 \u5f53\u4f5c\u5b57\u7b26 \u5373\u201c32767\u201d\uff0c\u8fd9\u65f6\u5e94\u8be5\u5206\u89e3\u20183\u2019\uff0c\u20182\u2019\uff0c\u20187\u2019\uff0c\u20186\u2019\uff0c\u20187\u2019\uff0c\u7136\u540e\u67e5\u5bf9\u5e94\u7684ASCII\u7801 \u5bf9\u5e94\u7684\u503c\u4e3a\uff1a0011001 00110010 00110111 00110110 00110111 \u6240\u4ee5\u5728\u5b58\u653e\u7684\u5373\u4e3a\u8be5\u4e8c\u8fdb\u5236\u7684\u7ec4\u5408\uff0c\u4e14\u53605\u4e2a\u5b57\u8282\u7684\u5185\u5b58\u3002

dseg segment
  d0 db '12345'  ;数字字符串
  c  equ $-d0    ;长度
  a  dw 0 ;转换后的结果
dseg ends

assume cs:cseg, ds:dseg
cseg segment
start:
  mov ax, dseg
  mov ds, ax

  mov bx, 10 ;10进制
  mov ah, 0 ;
  lea si, d0
  mov cx, c
m0:
  mov al,[si]
  and al,0Fh  ;ASCII数转为对应的数,相当于sub al,30H
 xchg ax, a ;ax, a交换
  mul bx     ;a*10 -> dx:ax, 只取ax
  add ax, a  ;a*10 + a
  xchg ax, a ;交换回去
  inc si     ;下一个数
  loop m0

  ;转换结束,10进制打印

  mov ax, a
  xor cx, cx
Q0:
  xor dx, dx
  div bx
  xor dx, 0e30h
  push dx
  inc cx
  cmp ax, 0
  jnz Q0
Q1:
  pop ax
  int 10h
  loop Q1

  mov ax,4c00h
  int 21h
cseg ends
end start


程序如下:

程序中的“带符号十进制数ASCII码串”是“-13579”。

程序执行后,显示出来其补码 1100 1010 1111 0101。



  • 灏嗘煇涓崄杩涘埗鏁癆SCII鐮佷覆杞崲涓哄搴旂殑浜岃繘鍒舵暟姹囩紪璇█
    绛旓細ASCII鏁拌浆涓哄搴旂殑鏁帮紝鐩稿綋浜巗ub al,30H銆xchg ax, a ;ax, a浜ゆ崲 mul bx ;a*10 -> dx:ax, 鍙彇ax add ax, a ;a*10 + a xchg ax, a ;浜ゆ崲鍥炲幓 inc si ;涓涓涓暟 loop m0 ;杞崲缁撴潫,10杩涘埗鎵撳嵃 mov ax, a xor cx, cxQ0: xor dx, dx div bx x...
  • 鐢ㄦ眹缂栬瑷灏嗗甫绗﹀彿鍗佽繘鍒鏁版嵁鐨凙SCII鐮佷覆杞崲涓轰簩杩涘埗琛ョ爜琛ㄧず鎬庝箞鍋...
    绛旓細鎶婂畠浠紝杞崲涓轰簩杩涘埗琛ョ爜琛ㄧず锛屽嵆涓猴細0011 0000 0011 1001锛1001 1111 1001 1000銆傛眹缂栬瑷绋嬪簭濡備笅锛氬叾涓滃甫绗﹀彿鍗佽繘鍒舵暟鎹殑ASCII鐮佷覆鈥濇槸锛氾紞13579銆傜▼搴忔樉绀哄嚭鐨勶紝姝f槸鍏惰ˉ鐮侊細1100 1010 1111 0101銆
  • c璇█涓浣曞皢鍗佽繘鍒鐨鏁拌浆鍖栦负ascii鐮?
    绛旓細voidmain(){ unsignedchara;printf("enterchar:");scanf("%C",&a);printf("ascii=%d",a);//寮哄埗杞寲涓篴scii鐮 }
  • 濡備綍杩涜ASCII鐮涓鍗佽繘鍒鐨勭浉浜掔殑杞崲
    绛旓細1銆佽嫳鏂囧瓧姣嶆槸瀛楃鍨嬶紝ASCII鐮佸崄杩涘埗鐨勶紝鍥犳鍙渶瑕佸皢瀛楃鍨杞崲涓哄崄杩涘埗锛屽湪杈撳嚭鍑芥暟鐨勬椂鍊欏己鍒惰浆鎹㈢被鍨嬨2銆丄SCII鏄互鍗佸叚杩涜浆琛ㄧず鐨勶紝鎵浠ュ氨鏄鍗佽繘鍒惰浆鍗佸叚杩涜浆锛涙瘮濡1610鐨勫崄杩涜浆瑕佽浆鎹负鍗佸叚杩涜浆锛涜繃绋嬪涓嬶細1610/16=10010(A)锛100/16=64锛6/16=06锛涙墍浠ワ紝1610(10杩涘埗)=64A(16杩涘埗)銆3銆...
  • 鍗佽繘鍒禔SCII鐮鐨杞崲!
    绛旓細1.灏ASCII鐮琛ㄧず鐨鍗佽繘鍒舵暟杞崲涓浜岃繘鍒舵暟鍗佽繘鍒舵暟鍙互琛ㄧず涓:Dn脳10n+Dn-1脳10n-1+鈥+D0脳100=Di脳10i 鍏朵腑Di浠h〃鍗佽繘鍒舵暟1銆2銆3鈥9銆0銆備笂寮忓彲浠ヨ浆鎹负:鈭慏i脳10i=((鈥(Dn脳10+Dn-1)脳10)+Dn-2)脳10+鈥+D1)脳10+D0鐢变笂寮忓彲褰掔撼鍗佽繘鍒舵暟杞崲涓轰簩杩涘埗鐨勬柟娉:浠庡崄杩涘埗鏁扮殑鏈楂浣Dn寮濮...
  • 鍗佽繘鍒100鎬庢牱杞崲鎴ascii鐮?
    绛旓細ascii鏄寚鍗曚釜瀛楃鏉ヨ〃绀虹殑锛岃100鏄笁涓瓧绗︺傛垜浠彲浠ユ妸瀹冨垎涓轰笁涓儴鍒嗭細鈥1鈥濃0鈥濃0鈥濓紝浠庡浘涓彲浠ョ湅瑙佹帶鍒剁鈥1鈥鐨凙SCII涓49锛"0"鐨凙SCII涓48 鎵浠100鍙互ASCII琛ㄧず涓 49 48 48 杩欓噷鐨49鍜48浠h〃鍗佽繘鍒锛杞崲涓鍗佸叚杩涘埗鍒嗗埆涓31H鍜30H ...
  • 涓夎彵PLC濡備綍鎶奱scii鐮琛ㄧず鐨鍗佽繘鍒舵暟杞崲鎴愬崄杩涘埗鏁
    绛旓細1銆侀鍏堟墦寮plc缂栫▼杞欢锛岀紪鍐涓鏉′互X0鎺у埗鍗佽繘鍒舵暟鎹紶閫佺殑鎸囦护锛屽湪X0瑙︾偣鍚庣洿鎺ヨ緭鍏モ淢OV K5 D0鈥濊〃绀鎶婂崄杩涘埗鏁5浼犻佽嚦D0瀵勫瓨鍣ㄣ2銆佺劧鍚庡湪鍐欎竴鏉¤鏁版寚浠わ紝鐢–0瀵筂8013杩涜璁℃暟銆3銆佸彲浠ヨ璁℃暟鍣ㄧ殑褰撳墠鏁板间紶閫佽嚦鏁版嵁瀵勫瓨鍣―1,鎸囦护涓衡淢OV C0 D1鈥濄4銆佺紪鍐欏ソ绋嬪簭涔嬪悗杩涜杞崲锛岀劧鍚庡绋嬪簭杩涜...
  • 灏ASCII鐮琛ㄧず鐨鍗佽繘鍒舵暟杞崲涓浜岃繘鍒舵暟
    绛旓細4ch涓柇鏄鍑虹▼搴忥紝濂藉儚娌℃湁杈撳嚭鏁板瓧鐨勪腑鏂紝02鏄緭鍑涓涓瀛楃锛9鏄緭鍑哄瓧绗︿覆锛岃屼笖浣犵殑绋嬪簭搴旇鍙槸鎶婂瓧绗涓茶浆鎹绋嬪簭鏁板瓧锛屽苟娌℃湁鎶婂崄杩涘埗杞崲鎴愪簩杩涘埗銆傝繖鏍疯瘯璇 loop loop1 mov [di],ax mov ah,9 int 21h mov ah,4ch int 21h
  • 鍗佽繘鍒惰浆鎹浜ASCII鎬庝箞杞崲
    绛旓細鍗佽繘鍒舵暟129杞崲鎴ASCII鐮锛堝崄鍏繘鍒舵暟锛夋槸锛1---31H 2---32H 9---39H 鍗佽繘鍒舵暟253杞崲鎴怉SCII鐮侊紙鍗佸叚杩涘埗鏁帮級鏄細2---32H 5---35H 3---33H
  • 鍔犳!!鐢ㄦ眹缂栧皢ASCII鐮琛ㄧず鐨鍗佽繘鍒舵暟杞崲涓浜岃繘鍒舵暟(琚浆鎹㈢殑浜斾綅ASCII...
    绛旓細xor esi,esi : sub [3500h+esi],30h inc esi cmp esi,5 je @b 鎻愮ず锛氬瓧绗0鐨刟scii鐮涓30h锛1鐨勪负31h...
  • 扩展阅读:十进制ascii码对照表 ... ascii十进制转换器在线 ... ascii码在线转换器 ... 标准ascii码表图 ... 进制转换器 ... 十六进制转ascii码计算 ... 十进制ascii码表图片 ... ascii码对照表图 ... 10进制转ascii码 在线转换 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网