黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 面授課程 模擬考試 實用文檔 繽紛校園 英語學習
2010考研 | 自學考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員
單證員 | 物流師 | 價格鑒證師 | 銀行從業資格 | 證券從業資格 | 人力資源管理師 | 管理咨詢師
期貨從業資格 | 社會工作者
會計職稱 | 注會CPA | 經濟師 | 統計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師
法律顧問 | 會計證
建造師一級二級) | 造價師 | 監理師 | 安全師 | 咨詢師 | 結構師 | 建筑師 | 安全評價師
估價師房地產估價土地估價) | 設備監理師 | 巖土工程師 | 質量資格 | 房地產經紀人 | 造價員
投資項目管理 | 土地代理人 | 環保師 | 環境影響評價 | 物業管理師 | 城市規劃師 | 公路監理師
公路造價工程師 | 招標師
執業護士 | 執業醫師 | 執業藥師 | 衛生資格
 蕭雨 
您現在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 正文

Casl匯編語言輔導(二)

二、匯編語言常用子程序
1、拆字與拼字: 
【例1】將 GR0 中的四位 BCD 碼從高到低依次存放到 GR2 所指的四個內存單元中。
START
LEAGR3,4;循環計數器
L1STGR0,REG;保護其余幾位 BCD 碼
ANDGR0,C000F;屏蔽高 3 位,留下最低 1 位 BCD 碼
STGR0,3,GR2;將此位 BCD 碼存放到 GR2 所指第四個內存單元
LDGR0,REG;恢復其余幾位 BCD 碼
SRLGR0,4;將已處理過的此位 BCD 碼移出
LEAGR2.-1,GR2;地址指針減 1
LEAGR3,-1,GR3;循環計數器減 1
JNZL1;未處理完,繼續
RET
C000FDC#000F ;十六進制常數,屏蔽屏蔽高 3 位 BCD 碼用
REGDS1 ;暫存單元 
END

 
【例2】將存放在 GR2 所指的四個內存單元中的四位 BCD 碼依從高到低順序壓縮到 GR0 中 。
START
LEAGR0,0;GR0 清 0
LEAGR3,4;循環計數器
L1SLLGR0,4;將已處理過的 BCD 碼移到高位
LDGR1,0,GR2;GR1 用作臨時工作寄存器
ANDGR1,C000F;屏蔽高 12 位
STGR1,0,GR2;對內存單元中的 BCD 碼預處理
ADDGR0,0,GR2;將已處理過的此位 BCD 碼加到 GR0 低位
LEAGR2.1,GR2;地址指針指向下一位 BCD 碼
LEAGR3,-1,GR3;循環計數器減 1
JNZL1;未處理完,繼續
RET
C000FDC#000F ;十六進制常數,屏蔽高 12 位二進制數
END

2、數字與 ASCII 碼之間的相互轉換: 
十進制數字 0~9 的 ASCII 碼是 30H~39H ,所以只要將十進制數(BCD 碼)加 30H 就是對應的 ASCII 碼。
十六進制數轉換成 ASCII 碼可分成兩段, 0~9 的 ASCII 碼是 30H~39H ,即加 30H ;A~F 的ASCII 碼是 41H~45H ,即加 37 H。
【例1】將 GR0 中的四位 BCD 碼化成 ASCII 碼從高到低依次存放到字符串變量 STR 中。
START
LEAGR2,3;相對于 STR 首址的地址指針
LEAGR3,4;循環計數器
L1STGR0,REG;保護其余幾位 BCD 碼
ANDGR0,C000F;屏蔽高 3 位,留下最低 1 位 BCD 碼
ADDGR0,C30;轉換成 ASCII 碼
STGR0,STR,GR2;將 ASCII 碼存放到 GR2 所指第四個內存單元
LDGR0,REG;恢復其余幾位 BCD 碼
SRLGR0,4;將已處理過的此位 BCD 碼移出
LEAGR2.-1,GR2;地址指針減 1
LEAGR3,-1,GR3;循環計數器減 1
JNZL1;未處理完,繼續
RET
C000FDC#000F ;十六進制常數,屏蔽高 3 位 BCD 碼用
C30DC#30 ;十六進制常數 30 
STRDS4 
REGDS1 ;暫存單元 
END

 
【例2】將 GR0 中的 16 位二進制數化成四位十六進制數 ASCII 碼從高到低依次存放到字符串變量 STR 中。
START
LEAGR2,3;相對于 STR 首址的地址指針
LEAGR3,4;循環計數器
L1STGR0,REG;保護其余幾位二進制數
ANDGR0,C000F;屏蔽高 12 位,留下最低 4 位二進制數
CPLGR0,C0A;< 10 否?
JMIL2;< 10 跳過加 7 ,只加 30H
ADDGR0,C7;≥ 10,加 30H 前先加上 7
L2 ADDGR0,C30;加上 30H
STGR0,STR,GR2;將 ASCII 碼存放到 GR2 所指第四個內存單元
LDGR0,REG;恢復其余幾位二進制數
SRLGR0,4;將已處理過的此 4 位二進制數移出
LEAGR2.-1,GR2;地址指針減 1
LEAGR3,-1,GR3;循環計數器減 1
JNZL1;未處理完,繼續
RET
C000FDC#000F ;十六進制常數,屏蔽屏蔽高 12 位二進制數
C30DC#30 ;十六進制常數 30 
C0ADC#0A ;十六進制常數 0A 
C7DC7 ;常數 7 
STRDS4 
REGDS1 ;暫存單元 
END

 
【例3】將字符串 STR 中的四位十六進制數的 ASCII 碼化成 16 位二進制數放到 GR0 中 。
START
LEAGR0,0;GR0 清 0
LEAGR2,0;相對于 STR 首址的地址指針
LEAGR3,4;循環計數器
L1SLLGR0,4;將已處理過的十六進制數移到高位
LDGR1,STR,GR2;GR1 用作臨時工作寄存器
ANDGR1,C00FF;屏蔽高 8 位
SUBGR0,C30;減去30H
CPLGR0,C0A;< 10 否?
JMIL2;< 10 ,完成轉換
SUBGR0,C7;≥ 10,再減去 7
L2 STGR1,STR,GR2;將 STR 中的 ASCII 碼轉換成十六進制數
ADDGR0,STR,GR2;將此位十六進制數加到 GR0 低位
LEAGR2.1,GR2;地址指針指向下一位 ASCII 碼
LEAGR3,-1,GR3;循環計數器減 1
JNZL1;未處理完,繼續
RET
C00FFDC#00FF ;十六進制常數,屏蔽高 8 位用
C30DC#30 ;十六進制常數 30 
C0ADC#0A ;十六進制常數 0A 
C7DC7 ;常數 7 
STRDS4 
END

3、利用加減法及移位指令做乘法: 
1)左移指令可將操作數乘 2 的整數次方(2、4、8、16);右移指令可將操作數除以 2 的整數次方。 
若操作數是無符號數,用邏輯移位指令;若操作數是有符號數,用算術移位指令。 
【例1】將 GR0 中的二進制數乘以 8。
SLLGR0,3

【例2】將 GR0 中的帶符號二進制數除以 4。
SRAGR0,2

2)將移位指令和加減法結合起來可完成乘數不是 2 的整數次方的乘法運算。 
【例1】將 GR0 中的二進制數乘以 10。
START
SLLGR0,1
STGR0,REG
SLLGR0,2
ADDGR0,REG
RET
REGDS1
END

【例2】將 GR0 中的二進制數乘以 7。
START
STGR0,REG
SLLGR0,3
SUBGR0,REG
RET
REGDS1
END

4、二進制數與十進制數的轉換 
1)二化十:
將二進制數轉換為十進制數的一種常用算法是將被轉換的二進制數依次被 10i( 對 16 位二進制數,i為 4、3、2、1、0)除,所得的商即為該十進制數位的值,其余數再被下一個 10i 除。一般用減法代替除法,即一邊減 10i,一邊計數器加 1,直到不夠減再進行下一位 10i-1。以求得十進制數的各位數。
例如:一個相當于十進制數 34635 的二進制數,可先用 10000 去減,可減 3 次,得萬位數是 3;再用 1000 去減,得千位數是 4;……
【例1】將 GR0 中的二進制數轉換為十進制數的ASCII 碼放入字符串 STR 中。
START
LEAGR1,0;減數表及字符串指針 
LEAGR2,5;循環計數器 
L1 LEAGR3,48;該十進制位的數碼預置 0 的 ASCII 碼
L2LEAGR3,1,GR3;數碼位的 ASCII 碼加 1
SUBGR0,SNO,GR1;操作數減去 10i  
JPZL2;夠減,繼續 
ADDGR0,SNO,GR1;不夠減,操作數及數碼位的 ASCII 碼恢復 
LEAGR3,-1,GR3
STGR3,STR,GR1;轉換好的該位 ASCII 碼存入結果字符串 
LEAGR1,1,GR1;地址指針加 1 
LEAGR2,-1,GR2;循環計數器減 1 
JNZL1;未結束,繼續下一位 
RET
SNODC10000
DC1000
DC100
DC10
DC1
STRDS5 ;轉換結果字符串
END

1)十化二:
將十進制數轉換為二進制數的算法基礎是下面公式:
N = (Dn-1*10n-1+Dn-2*10n-2+……+D1*101+D0*100
  = ((…((Dn-1*10+Dn-2)*10+……+D1)*10+D0)*10
可以用循環程序實現此公式,*10 可用移位及加法指令完成。
【例2】將存放在字符串 STR 中的五位十進制數(<65536)的 ASCII 碼轉換成二進制數放到 GR0 中 。
START
LEAGR0,0;轉換結果寄存器清 0 
LEAGR2,5;循環計數器 
LEAGR1,0;地址指針(偏移量)
L1 SLLGR0,1;轉換結果*10,先乘以 2
STGR0,REG;暫存 2*X
SLLGR0,2;2*X*4=8*X
ADDGR0,REG;8*X + 2*X
LDGR3,STR,GR1;取一位 ASCII 碼
ANDGR3,C000F;將 ASCII 碼變成 BCD 碼
STGR3,REG;結果暫存 
ADDGR0,REG;將新的一位 BCD 碼加到轉換結果中 
LEAGR1,1,GR1;地址指針加 1 
LEAGR2,-1,GR2;循環計數器減 1 
JNZL1;未結束,繼續下一位 
RET
C000FDC#000F ;十六進制常數,屏蔽高 12 位二進制數
STRDC’35475’ 
REGDS1;暫存單元 
END

5、求累加和 
【例1】將變量 NUMBER 中的 5 個二進制數累加后放入變量 SUM 中。
START
LEAGR2,NUMBER;地址指針
LEAGR3,5;循環計數器
LEAGR0,0;累加和清 0
L1ADDGR0,0,GR2;累加
LEAGR2,1,GR2;地址指針指向下一個二進制數
LEAGR3,-1,GR3;計數器減 1
JNZL1;未完,繼續
STGR0,SUM;累加結束,累加和送入 SUM 單元
RET
NUMBERDS5
SUMDS1
END 轉帖于:軟件水平考試_考試吧
文章搜索
Casl匯編語言輔導(二)網友評論網友評論
版權聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。
 
主站蜘蛛池模板: 国产免费理论片在线观看 | 高清黄色一级片 | 日韩精品一区二区三区在线观看l | 久久一本精品久久精品66 | 香港日本三级在线播放 | haose08永久免费视频 | 免费a在线观看播放 | 天天摸夜夜摸爽爽狠狠婷婷97 | 成人欧美日韩视频一区 | 国产亚洲欧美另类一区二区三区 | 日本不卡视频在线 | 最近2019中文字幕大全视频1 | 久久久网站亚洲第一 | 亚洲一区欧美日韩 | 美国一级大黄香蕉片 | 一级毛片免费毛片一级毛片免费 | 日韩中文字幕在线看 | 六度国产福利午夜视频黄瓜视频 | 精品综合久久久久久98 | 国产一卡2卡3卡免费网站 | 日韩第五页 | 一个人www免费观看视频 | 香蕉官网 | 冲田杏梨午夜久久99视 | 最近免费视频中文 | 欧美综合另类 | 欧美videoxx12一14| 一色屋精品亚洲香蕉网站 | 成人午夜免费在线观看 | 一个人免费看的视频 | 国产成人精品久久一区二区三区 | 北条麻妃国产九九九精品视频 | 欧美刺激性大交 | 成人免费视频网站www | 图片区 日韩 欧美 亚洲 | 日韩精品一区二区三区高清 | 成年网站免费入口在线观看 | 99热99操99射 | 妞干网精品| 久草香蕉视频在线观看 | 一个人看的视频在线www高清 |