用匯編語言編程
今天我瘋狂了,寫了好多代碼順便說一下,那個是ASCII不是ASCLL,美國信息交換標準碼 ,ds:datadatasegmentOBJdb'C','A','B','1','3','6','@',')','$'TEMPdb"$$$$"dataendscodeseg ,datamovds,axmovbx,offsetOBJmovcx,9 ,02movdl,[bx]int21Hmovdl,':'int21Hmoval,[bx]callChaNummovdx,offsetTEMPmovah,09int21Hmovah,02movdl,13int21Hmovdl,10int21Hincbxloopxu ,1movcx,2000Hint10Hmovah,0int16Hmovax,4C00Hint21HChaNum:;(AL=待轉換的數字);(TEMP=轉換后的ASCII)pushaxpushbxpushcxmovah,0movbx,offsettempmovcx,2020Hmov[bx],cxmovcx,2420Hmov[bx+2],cxaddbx,2 ,10divclmovch,ahaddch,30Hmov[bx],chmovah,0decbxcmpal,0jnzCNSpopcxpopbxpopaxretcodeendsendstart。
求匯編語言中的指令語句、偽指令語句和宏指令語句的定義
我們編寫的各種指令,都是寫給“編譯軟件”看的,
要由“編譯軟件”翻譯成計算機可以識別的機器語言,即機器碼。
通俗地講:
就好像召開新聞發布會,主持人用中文講話,由一個翻譯,現場翻譯成英文,講給外國記者聽。
主持人說的中文,大部分都是要翻譯成英文的;少數幾句,是說給翻譯聽的,告訴他如何翻譯。
我們寫的指令,由“編譯軟件”翻譯成機器碼的,稱為指令語句;
有一些是寫給“編譯軟件”看的,不翻譯成機器碼,這樣的就是“偽指令”。
一條條計算機的指令,一般來說,功能都是極為簡單,我們可以把幾條、幾十條指令,編寫成一個“宏指令”,來完成一個比較復雜的任務。
在這樣“一批指令”的前面,要用“偽指令”來命名這個“宏指令”;
在后面,要用一條“偽指令”說明結尾。
以后,這個“宏指令”,就可以當成 正式指令 來使用了。
一個匯編語言的問題
debuga100 mov ax,2000 mov ds,ax mov si,1000 mov al,[si] inc si mov cx,910e:cmp al,[si] jae 114 xchg al,[si]114:inc si loop 10e rete2000:1000 # # # # # # # # # # ;你預置的10個字節數g=100rax ;最大值在AL中q 從存儲單元2000:1000起,隨即 (* 順序才好算)存放了10個字節的數據,要求找出其中重(** 最)大的數據放在AL中。
實際運行無誤,來遲了。
匯編語言有哪兩類語句
我一直很糾結你會這么問。。后來我明白了。
匯編語言應該分:
1.偽指令——沒有對應的機器碼,只是編譯器負責編譯。
2.匯編指令——有對應的機器碼,編譯器只需要將其編譯成二進制的代碼就能順利的被計算機執行。
你像這類語句就屬于偽指令:
assume cs:code ds:data ss:stack
這類的就屬于匯編指令:
mov ax,0001
又或者 add ax,bx
匯編語言 bt語句
匯編語言中bt是位操作指令:
指令的格式:BT/BTC/BTR/BTS Reg/Mem,Reg/Imm ;80386+
受影響的標志位:CF
位檢測指令是把第一個操作數中某一位的值傳送給標志位CF,具體的哪一位由指令的第二操作數來確定。
根據指令中對具體位的處理不同,又分一下幾種指令:
BT:把指定的位傳送給CF;
BTC:把指定的位傳送給CF后,還使該位變反;
BTR:把指定的位傳送給CF后,還使該位變為0;
BTS:把指定的位傳送給CF后,還使該位變為1;
例如:假設(AX)=1234H,分別執行下面指令。
BT AX, 2 ;指令執行后,CF=1,(AX)=1234h
BTC AX, 6 ;指令執行后,CF=0,(AX)=1274h
BTR AX, 10 ;指令執行后,CF=0,(AX)=1234h
BTS AX, 14 ;指令執行后,CF=0,(AX)=5234h