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
在組合語言中,怎樣程式設計給變數賦初始值
比如要給qw變數賦初值 qw db 064h qw的值就是64h了 問的是不是如何給電子萬年曆設定初始日期和時間,讓它從這個時間開始走?不同的組合語言賦值的語句不同,例如在51微控制器的組合語言中 給一個暫存器賦值這樣寫 mov a,10h 組合語言怎麼還有賦初值的問題,一般只有 高階語言才有所謂的...
組合語言中把資料列印到螢幕上的指令是什麼啊?急求答案
沒有這個指令,baidos中斷21h的功能號ah 02h,可以du實現輸出zhi 一個字元,我給你一個整dao數輸出的例版 子。輸出一 權個整數,值放在ax中,如果bx中為1,表示有符號數,否則無符號數putint proc near push cx push dx cmp bx,1 jnz nos...
用組合語言實現以查詢方式的資料傳送 將記憶體中首地址為BUF的儲存區內的節資料向CRT終端輸出
之前另一個回答buffer地址沒有隨著迴圈增加lea si,buffer buffer地址mov cx,128 迴圈128次lop mov dx,0010h 狀態口地址in al,dx 讀取狀態test al,10000000b 檢測d7 jnz lop d7為1則繼續檢查 mov al,si mo...