導航:首頁 > 軟體知識 > 如何寫一個以位元組形式的程序

如何寫一個以位元組形式的程序

發布時間:2023-01-22 16:48:38

1. 編寫C程序調用匯編語言,實現將1K大小的內存塊以位元組形式復制的另一內存地址

#include<stdio.h>
#define NUM 1024
int main()
{
char strFrom[NUM] = { "good good study, day day up." };
char strTo[NUM];
__asm
{
mov ecx, NUM;
lea esi, strFrom;
lea edi, strTo;
rep movsb;
}
printf("%s\n", strTo);
}

在VC里運行成功。不要用dev-c++,因為dev-c++用的是AT&T的語法。

2. 用匯編語言編寫一個多位元組壓縮BCD加法程序。要求顯示被加數、加數及結果。

只顯示結果,加數、被加數的顯示你自己琢磨吧!


CODESEGMENT
ASSUMECS:CODE

XDB12H,34H,56H
YDB65H,98H,98H
NEQU$-Y
ZDBN+1DUP(0)

START:PUSHCS
POPDS
PUSHCS
POPES;使數據段、附加段與代碼在同一段中
MOVCX,N;位元組數置入cx
MOVBX,0;基址寄存器置0
CLC;清進位借位標志
@0:
MOVAL,X[BX];將被加數的低位元組移入al
ADCAL,Y[BX];帶進未的加,加加數的低位元組
DAA
MOVZ[BX],AL;將結果移入和的低位元組
INCBX;基址寄存器加1
LOOP@0;循環

MOVBYTEPTRZ[BX],0;處理最高位
JNC@01
MOVBYTEPTRZ[BX],1
@01:
LEASI,Z;將和的首地址置入si
MOVCX,N+1;位元組數置入cx
CLD
@1:
LODSB;裝入和的低位元組到al
CALLDSPAL;調用子程序以16進制形式顯示(其實是顯示bcd數)
LOOP@1;循環

MOVAH,4CH
INT21H

;=============================
DSPALPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
MOVCX,2;一個位元組只有2位的16進制數
MOVBX,AX;將al保存到bl中
@DSPAL1:
RORBL,1;循環將bl右移4次,即將高位移到右側
RORBL,1
RORBL,1
RORBL,1
MOVDL,BL;放到dl中
ANDDL,0FH;清掉高位
CMPDL,9;和9比較
JA@DSPAL2;大於即在A~F之間
ADDDL,30H;否則就是0~9,加30H變為ASCii碼
JMP@DSPAL3
@DSPAL2:
ADDDL,37H;加37H變為A~F的ASCii碼
@DSPAL3:
MOVAH,2
INT21H
LOOP@DSPAL1;循環輸出低位
MOVAH,2
MOVDL,'H';顯示H
INT21H
MOVDL,32;顯示空格
INT21H
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPALENDP

CODEENDS
ENDSTART

3. 編寫一個程序顯示你所使用的計算機中的各種數據類型的位元組數。

如果你要知道一個int型的位元組數可以這樣寫:
#include<stdio.h>
void main()
{
int x;
x=sizeof(int);
printf("%d",x);
}
其他的同上。

閱讀全文

與如何寫一個以位元組形式的程序相關的資料

熱點內容
國盛期貨要下載哪個app交易 瀏覽:426
金數據如何在填完後顯示信息 瀏覽:143
司法技術室是什麼意思 瀏覽:719
創業板上市找什麼公司代理 瀏覽:895
肉類調理品有什麼產品 瀏覽:656
柘城對比淅川辣椒市場哪個大 瀏覽:79
餐飲小程序怎麼找紅利 瀏覽:438
微信發了多少條信息怎麼看 瀏覽:107
目前市場上的仿製葯有哪些 瀏覽:703
西部數據2400mb是什麼意思 瀏覽:516
什麼產品可以消痘 瀏覽:395
c語言如何查找源程序 瀏覽:374
吉客優品代理怎麼做 瀏覽:967
plc程序sftl什麼意思 瀏覽:763
標普技術進展如何 瀏覽:356
代理服務行業的賬怎麼做 瀏覽:53
歐盟農產品標准怎麼查看 瀏覽:854
什麼情況下可以不使用實質性程序 瀏覽:123
短期交易用英語怎麼說 瀏覽:464
客房入住信息多久消失 瀏覽:510