在組合語言中怎樣將資料段全部清零

時間 2021-08-13 16:50:32

1樓:匿名使用者

;功能:顯示當前目錄下的文字檔案內容

eof = 1ah

dseg segment

fname db 'e:\asm\test.bat',0 ;檔案完整路徑名

error1 db 'file not found',07h,0 ;提示資訊

error2 db 'reading error',07h,0buffer db ? ;1位元組的緩衝區dseg ends

cseg segment

assume cs:cseg,ds:dsegstart: mov ax,dseg

mov ds,ax

mov dx,offset fname

mov ax,3d00h ;為讀開啟指定檔案int 21h

jnc open_ok ;開啟成功,轉

mov si,offset error1

call dmess ;顯示不成功資訊jmp over

open_ok:mov bx,ax ;儲存檔案柄cont: call readch ;從檔案中讀一個字元jc readerr ;如讀出錯,則轉

cmp al,eof ;讀到檔案結束符嗎?

jz type_ok ;是,轉

call putch ;顯示所讀字元

jmp cont ;繼續

readerr:mov si,offset error2call dmess

type_ok:mov ah,3eh ;關閉檔案int 21h

over: mov ah,0 ;結束程式int 16h

mov ah,4ch

int 21h

readch proc

mov cx,1 ;置讀位元組數

mov dx,offset buffer ;置讀緩衝區地址mov ah,3fh

int 21h

jc readch2 ;讀出錯,轉

cmp ax,cx ;判斷檔案是否結束mov al,eof ;檔案結束,置結束符jb readch1 ;檔案結束,轉

mov al,buffer ;檔案未結束,取所讀字元readch1:clc

readch2:ret

readch endp;;

;;顯示一個以0為結束符的字串

dmess proc

dmess1: mov dl,[si]

inc si

or dl,dl

jz dmess2

mov ah,2

int 21h

jmp dmess1

dmess2: ret

dmess endp

;顯示一個字元

putch proc

push dx

mov dl,al

mov ah,2

int 21h

pop dx

retputch endp

cseg ends

end star

我剛開始學彙編,這是書上一個例題,給你看看,masm編寫的

2樓:匿名使用者

clear:

cld ;清除方向標誌位

lea di,[2000h] ;設定起始地址mov cx,128 ;設定要清零的字數xor ax,ax ;ax清零

rep stosw ;重複串操作,將128個字清零

組合語言中如何對暫存器清零

3樓:匿名使用者

一般常用 xor指令

不但指令短,而且執行速度快。

4樓:匿名使用者

樓上的第三種好,只是在暫存器間操作,沒有到記憶體取數

5樓:鯤鵬展翅

以暫存器ax為例

1.mov ax,0

2.and ax,0

3.xor ax,ax

將30h單元開始的10個單元全部清零,試編寫程式(組合語言) 5

6樓:匿名使用者

mov di, 30h

mov al, 0

mov cx, 10

@1:stosb

loop @1

組合語言中的返回指令rst問題,組合語言中的返回指令Rst問題

先澄清一下你問得模糊的地方。1 你說的 rst 返回指令應該是 ret 吧?2 sp 不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。堆疊的工作原理可簡述為 後進先出 即lifo,last in first out。具體解釋請...

組合語言buff什麼意思,組合語言中 BUFF DB 60 DUP 是什麼意思?

組合語言中buff這個關鍵字,所以出現這個字母組合應該是一個變數,從字面上理解應該是與儲存器相關的一個變數,比如開闢一個緩衝區用於收發串列埠資料等等。 君威 不帶引號的?指從buff的位置開始預留指定位元組數的記憶體空間 帶引號的?指從buff的位置開始連續存放指定位元組數的?字元 帶引號的 指從b...

關於組合語言移植性的問題,關於組合語言中的LOOP指令

兄弟,你理解錯了,首先你要明白,組合語言是一種針對具體機器的低階語言,這裡說的不同機器一般來講是指cpu指令系統不相相容的兩種機器,比如常用的8086與51,dsp,arm,等等,他們的指令系統都不是通用的。自然移植到別的機器上不行,舉個例子來說吧,假如51,的p0埠可以用來點亮一盞燈,但是對808...