今天我直接系統的介紹一些8086指令用法,以便以後更好地讀懂程式。能夠寫些簡單的程式。
一、傳送指令mov
解釋一下:mem(主存),imm(立即數),reg(暫存器),seg(段暫存器),dst(目的運算元),src(源運算元)。(以後都這樣)。
mov dst,src ;就是將(src)->dst。
例如:mov al,4 ;將十進位制4,轉換成的16的4,然後放到暫存器al裡面,(預設數字後面不加說明就是十進位制數數字) ;(分號在組合語言裡面是注釋)。
mov si,200h
mov al,『1』 ;將1所代表的ascii放到al中。
注意:①兩個運算元型別要一致。(就是16位的數傳給16位,8位的數傳給8位)
②兩個運算元不能都是mem。(原因:訪問主存太慢了,你竟然乙個命令要訪問兩次,當然不行)
③段暫存器操作的限制
不允許立即數傳送給暫存器
不允許直接改變cs的值
不允許段暫存器之間直接資料傳送。
二、堆疊操作指令push/pop
一開始sp是指向高位址的,然後每壓進去乙個字,就sp=(sp)-2,向地位址方向伸展,壓棧和出棧只能是字,沒有位元組,所以sp要麼加2,,要麼減2。理解棧這邊很簡單,你們看我之前寫的8086提供的棧機制部落格就能理解,這裡不在重複。
三、交換指令xchg
下面我們來看一下交換嘛,只能是暫存器和暫存器或暫存器和主存之間交換。xchg dst,src ;(dst)(src)
例如:xchg ax,[2000h] ;就是將ax暫存器裡面的值和偏移位址位2000h的主存字單元內容互換
四、輸入/輸出指令 in/out
當是乙個位元組時可以用直接定址或暫存器間接定址,但如果是乙個字的話,只能是暫存器間接定址,也就是說,直接定址只能是8位資料。
下面舉幾個例子,大家根據注釋理解一下即可
1)直接定址
in al,50h ;將50h埠的位元組讀入al中
in ax,70h ;將70h、71h兩端口的值讀入ax,70埠的值讀入al,71h埠的值讀入ah
out 80h,ax ;將ax中的內容輸出到80h、81h埠
2)暫存器間接定址
埠號必須設在暫存器dx中,現假設dx暫存器中為80h
in al,dx ;從dx所指的埠80h中讀取1個位元組
in ax,dx ;從兩端口中讀取1個位元組送到ax中,80h中的值送al,81h中的值送ah
out dx,ax ;將ax中的字輸出到80h、81h埠。
提供ClearQuest的一些資料
昨天終於把clearquest安裝起來了,按照配置手冊進行了配置,基本上可以使用了,為此把我在網上蒐集的幾份比較有用的資料發布一下,有興趣的朋友也可以看看 clearquest安裝手冊 http files.cnblogs.com tintown rationalclearquest anzhuan...
Linux一些指令
date 檢視日曆 cal 輸出 檢視命令 顯示輸入的內容 echo 顯示文字檔案內容 cat 翻頁顯示檔案內容 只能向下翻頁 more 翻頁顯示檔案內容 帶上下翻頁 less 顯示檔案的頭幾行 預設10行 head n 指定顯示的行數 顯示檔案的末尾幾行 預設10行 tail n f追蹤顯示檔案更...
docker 一些指令
docker run it tomcat 7.0.68 jre8 bin bash 進入容器 root iz25ljx2ojuz command cat create.sh bin bash docker create v logs logs v dockertmp skywalker api sk...