《匯編語言程序設計》第8章:邏輯運算.ppt
《《匯編語言程序設計》第8章:邏輯運算.ppt》由會員分享,可在線閱讀,更多相關《《匯編語言程序設計》第8章:邏輯運算.ppt(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。
匯編語言程序設計 朱耀庭 南開大學朱耀庭 第8章邏輯運算 邏輯運算指令是對字節(jié)或字中的各位進行運算的指令 即它是位運算指令 在目前計算機廣泛應用的情況下 計算機大量的工作不是進行算術運算 而是進行信息處理 信息傳送 這些都需要做大量的位運算 在研制系統(tǒng)軟件或進行軟件開發(fā)中也需要大量的位運算 本章結(jié)合二進制數(shù)和BCD碼的輸入 輸出問題來介紹邏輯運算指令的應用 與算術運算指令一樣 邏輯運算的結(jié)果也對標志寄存器產(chǎn)生影響 希望同學們在掌握邏輯運算指令及其程序設計的同時 關注邏輯運算與條件轉(zhuǎn)移指令的關系 為分支程序設計奠定基礎 南開大學朱耀庭 第8章邏輯運算 8 4邏輯運算指令應用 8 3循環(huán)移位指令 8 2移位指令 8 1邏輯運算指令 南開大學朱耀庭 8 1邏輯運算指令 南開大學朱耀庭 1 AND指令 格式 AND目的操作數(shù) 源操作數(shù)功能 AND將兩個操作數(shù) 字節(jié)或字 進行按位 邏輯與 運算 結(jié)果送回目的操作數(shù) 若原來的兩個操作數(shù)中的對應位均為1 則結(jié)果中的該位置1 否則 該位置0 作用 用AND指令可以將一個字節(jié)或字中的某些特定位清零 或者說將某些特定位截取下來 AND指令執(zhí)行后 標志CF 0 OF 0 PF SF ZF反映操作的結(jié)果 AF未定義 例如 設AL的每一位代表一個燈或開關狀態(tài) 1表示燈亮或開關ON 0表示燈滅或開關OFF 則指令 ANDAL 10111111B的作用就是關掉第6位所在位置的燈或開關 其他位對應燈或開關狀態(tài)不變 而 ANDAL 01000000B的作用是關掉除第6位以外的燈或開關 而第6位的燈或開關保留原狀態(tài) 南開大學朱耀庭 2 TEST指令 格式 TEST目的操作數(shù) 源操作數(shù)功能 TEST對兩個操作數(shù)進行邏輯與運算 但結(jié)果并不送至目的操作數(shù) 只是影響狀態(tài)標志 此指令執(zhí)行后兩個操作數(shù)都不變 作用 這條指令常用來檢測一些條件是否滿足 但又不希望改變原有的操作數(shù)的情況 即適用于檢查一個字節(jié)或字中的某些特定位是否有一位為1 方法是 將要檢查的字節(jié)或字作為本指令的一個操作數(shù) 另一個操作數(shù)為指令要檢查的位的邏輯乘常數(shù) 如果測試結(jié)果 TEST指令執(zhí)行結(jié)果 不為0 即ZF 0 則說明至少有一個特定位為1 因此 通常是在TEST指令后面跟上一條條件轉(zhuǎn)移指令 以便根據(jù)ZF是否為0來進行轉(zhuǎn)移 南開大學朱耀庭 2 TEST指令 例如 設AL的每一位代表一個燈或開關狀態(tài) 1表示燈亮或開關ON 0表示燈滅或開關OFF 則程序段 TESTAL 01000000BJNZL 第6位對應燈亮或開關ON轉(zhuǎn)標號L執(zhí)行 第6位對應燈滅或開關OFF轉(zhuǎn)標號L執(zhí)行例如 檢查BL的低4位是否至少有一位為1的程序段可以書寫如下 TESTBL 0FHJEL ZF 1時轉(zhuǎn)L 即低4位全為0時轉(zhuǎn)L處 低4位至少有一位為1時的處理L 低4位全為0時的處理 南開大學朱耀庭 3 OR指令 邏輯或 邏輯加 格式 OR目的操作數(shù) 源操作數(shù)功能 OR指令將兩個操作數(shù) 字節(jié)或字 進行按位邏輯加操作 并將結(jié)果送至目的操作數(shù) 如果兩個操作數(shù)中對應位有一個為1或全為1 則結(jié)果的該位為1 否則 結(jié)果的該位為0 OR指令對狀態(tài)標志的影響同AND指令 OR指令往往用于對字節(jié)或字的特定位置數(shù) 拼數(shù) 例如 ORAL 30H 將AL高4位拼上3又如 設AL的每一位代表一個燈或開關狀態(tài) 1表示燈亮或開關ON 0表示燈滅或開關OFF 則指令 ORAL 01000000B的作用就是打開第6位所在位置的燈或開關 其他位對應燈或開關狀態(tài)不變 南開大學朱耀庭 4 XOR指令 邏輯異或 稱按位加 格式 XOR目的操作數(shù) 源操作數(shù)功能 XOR指令將兩個操作數(shù) 字節(jié)或字 進行按位邏輯異或操作 并將結(jié)果送至目的操作數(shù) 如果兩個操作數(shù)中對應位相同 均為0或均為1 則結(jié)果該位為0 否則 結(jié)果該位為1 該指令對狀態(tài)標志的影響和AND指令相同 XOR指令適用于對一個數(shù) 字節(jié)或字 或一個數(shù)的特定位求反例如 將AL寄存器中數(shù)01011100B求反 只要邏輯異或常數(shù)0FFH 即8位全1 即可 MOVAL 01011100BXORAL 0FFH 10100011B AL 南開大學朱耀庭 4 XOR指令 邏輯異或 稱按位加 再如 將AL寄存器的中間4位求反 只要邏輯異或立即數(shù)00111100B 即3CH 即可XORAL 3CH又如 XORAL BLXORAL BL結(jié)果AL不變 在圖形顯示時 這一特性往往用于動畫制作 想想為什么 南開大學朱耀庭 4 XOR指令 邏輯異或 稱按位加 注意 以上4個邏輯指令的兩個操作數(shù)均可以是同數(shù)據(jù)類型的寄存器操作數(shù) 或同數(shù)據(jù)類型的一個寄存器操作數(shù)和一個內(nèi)存操作數(shù) 或目的操作數(shù)是寄存器或存儲器 源操作數(shù)為立即數(shù) 例如 ANDALPHA DI 0FH ORGAMMA BX SI 3030H 其中GAMA為字變量 XORA 0FFH 其中A為字節(jié)變量TESTBYTEPTR DI 0F0H 南開大學朱耀庭 5 NOT指令 邏輯非 或叫求反碼 格式 NOT目的操作數(shù)功能 NOT指令對目的操作數(shù)的每一位求反碼 并將結(jié)果送回目的操作數(shù)此指令只有目的操作數(shù) 目的操作數(shù)可以是通用寄存器也可以是存儲器 具體操作是從0FFH 對于字節(jié)來說 或從0FFFFH 對字來說 中減去指定的操作數(shù) 并將結(jié)果送回目的操作數(shù) 此指令不改變狀態(tài)標志 南開大學朱耀庭 8 2移位指令 南開大學朱耀庭 1 SHL指令 邏輯左移 格式 SHL目的操作數(shù) COUNT其中 目的操作數(shù)可以是通用寄存器 也可以是存儲器 功能 SHL指令將目的操作數(shù)左移COUNT次 位 最高位移入進位標志CF中去 而CF中原來的值被沖掉 移位后空出的最低位中填0 如圖8 1所示 圖8 1SHL指令操作過程 動畫演示 南開大學朱耀庭 1 SHL指令 邏輯左移 移位次數(shù)COUNT若為1 則 SHL目的操作數(shù) 移位后目的操作數(shù)的最高位與CF不同 則將OF置1 否則OF 0 對于帶符號數(shù)來說 這用來表示移位以后的符號位與移位前的符號位是否相同 若相同則OF 0 表示沒有產(chǎn)生超位結(jié)果 因為每左移1位數(shù)值就擴大1倍 移位次數(shù)COUNT不為1 則 MOVCL COUNT且SHL目的操作數(shù) CL 移位后OF的值不能確定 狀態(tài)標志PF SF ZF表示移位后的結(jié)果 標志AF 輔助進位 總是不確定的 CF中總是包含從目的操作數(shù)中移出的最后一位的值 例如 SHLAL 1 將 AL 左移一位MOVCL 3 SHL AL CL 將 AL 左移3位 南開大學朱耀庭 1 SHL指令 邏輯左移 用SHL指令將一個無符號數(shù)左移1位等于將數(shù)倍增 乘2 用SHL指令使數(shù)倍增比用乘法指令速度快得多 可以通過CF是否為0檢查移位結(jié)果是否超位 比如 將8位數(shù)65 01000001B 左移1位得到130 10000010B 這時CF 0指明沒有超位 再將130左移1位得到4 00000100B 這時CF 1表明已超位 此時將OF置位 置1 因此通過檢查OF也可以知道是否超位 檢查超位的方法是在移位指令后面跟上一條測試CF 或OF 的條件轉(zhuǎn)移指令 例8 1讀以下程序 并且說明輸入一個字符后輸出什么 南開大學朱耀庭 2 SHR指令 邏輯右移 格式 SHR指令格式和SHL相同 功能 將一個無符號數(shù)向右移位 左邊 最高位 出現(xiàn)空位補0 右邊 低位 移至CF 如圖8 2所示 此指令影響狀態(tài)標志 CF OF PF SF ZF 但AF不確定 圖8 2SHR指令操作過程 動畫演示 南開大學朱耀庭 2 SHR指令 邏輯右移 SHR指令適用于將一個無符號數(shù)減半 右移1位等于將數(shù)除以2 用SHR指令使數(shù)減半比用除法指令速度要快得多 另外 可以通過右移1位后看CF是否為0 檢查數(shù)是否為偶數(shù) CF為1表明此數(shù)不是偶數(shù) 比如將8位數(shù)11 0000101B 右移1位得到5 00000101 這時CF 1 故數(shù)11不是偶數(shù) 檢查的方法是在移位指令后跟上一條測試CF的條件轉(zhuǎn)移指令 南開大學朱耀庭 3 SAL指令 算術左移 SAL指令同SHL指令 實際上SHL和SAL是同一條指令的兩種助記符 它們執(zhí)行的操作完全一樣它一般用于帶符號位的數(shù)的倍增 乘2 對于帶符號的數(shù)檢查超位時只能測試OF 南開大學朱耀庭 4 SAR指令 算術右移 SAR指令類似于SHR指令 SAR同SHR的區(qū)別在于 SHR是連同符號位一起右移 左邊 最高位 出現(xiàn)的空位補0 而SAR右移時符號位不動 保持不變 左邊 數(shù)的最高位 出現(xiàn)的空位補上符號位的值 SAR指令的操作如圖8 3所示 圖8 3SAR指令操作過程 動畫演示 南開大學朱耀庭 4 SAR指令 算術右移 SAR指令適用于將帶符號位的數(shù)減半 除以2 例如 用SAR指令將8位數(shù) 8 00001000 右移1位得到 4 00000100 將8位數(shù) 120 10001000 右移1位得 60 110001000 另外 用SAR指令將 5 00000101 右移1位 減半 得 2 00000010 用SAR指令將 5 11111011 右移1位 減半 得 3 11111101 可見SAR將奇數(shù)右移1位時 總是得出比該數(shù)的一半還小的結(jié)果 值得注意的是 如果目的操作數(shù)為負的 且其中具有1的位數(shù)移出以后 則SAR指令產(chǎn)生的結(jié)果與用整數(shù)除IDIV指令產(chǎn)生的結(jié)果是不一樣的 例如 5經(jīng)SAR在右移1位之后得 3 而用IDIV作整數(shù) 5被2除后得 2 這是因為IDIV指令將所有的數(shù) 包括正 負 向0進行舍入 而SAR指令將正數(shù)向0進行舍入 將負數(shù)向負無窮大進行舍入 南開大學朱耀庭 4 SAR指令 算術右移 SAR影響狀態(tài)標志有CF OF PF SF ZF綜上所述 移位指令可以對字節(jié) 8位 或字 16位 中的位進行操作 指令的第一個操作數(shù)為目的操作數(shù) 目的操作數(shù)可以是通用寄存器 也可以是存儲器 各種尋址方式 指令的第二個操作數(shù)不是通常的源操作數(shù) 而是移位次數(shù)計數(shù)值操作數(shù) 一條指令可實現(xiàn)高達255次移位的操作 指令中的移位計數(shù)值可以指定為1 或指定為寄存器CL CL中包含移位次數(shù) 因此 需要事先將移位次數(shù)送入CL寄存器 南開大學朱耀庭 4 SAR指令 算術右移 移位指令對標志的影響如下所述 1 在移位指令執(zhí)行后 AF總是不確定的 2 同邏輯指令 算術指令一樣 通常移位指令的結(jié)果也要影響SF ZF和PF 3 CF中總是含有從目的操作數(shù)中移出的最后一位的值 4 在執(zhí)行多位移位后 OF的內(nèi)容不確定 對于1位的移位操作 如果操作數(shù)的最高位 符號位 在指令執(zhí)行后被改變 OF就被置位 反之 如果操作數(shù)的最高位在指令執(zhí)行后仍保持原來的值 則OF被清零 南開大學朱耀庭 4 SAR指令 算術右移 在數(shù)的輸入 輸出過程中 乘10的操作是經(jīng)常要進行的 8086 8088提供了乘法指令 乘10可以采用乘法指令來做 但是如果我們查閱一下8086 8088有關乘法指令的資料 可以知道 乘法指令執(zhí)行時間最短的是在寄存器中的兩個字節(jié)相乘 需要70個時鐘 而X 10 X 2 X 8 因此 將AL中的數(shù)乘10也可以采用移位和相加的辦法來實現(xiàn) 故可用以下程序段實現(xiàn)之 指令注解時鐘數(shù)SALAL 1 X 22MOVBL AL 送至BL暫存2SALAL 1 X 42SALAL 1 X 82ADDAL BL X 103 南開大學朱耀庭 4 SAR指令 算術右移 這樣 從指令的數(shù)量來說 雖多了些 但是執(zhí)行時間卻要短得多 總共需要執(zhí)行時間為11個時鐘 其中 X 2也可以用X X來實現(xiàn) 因此X 10也可以用以下程序段實現(xiàn) 指令注解時鐘數(shù)ADDAL AL X 23MOVBL AL 送至BL暫存2ADDAL AL X 43ADDAL AL X 83ADDAL BT X 103總執(zhí)行時間為14個時鐘 因此 采用移位的方法實現(xiàn)乘10是較合適的 例8 2讀以下程序 并且說明輸入一個字符后輸出什么 南開大學朱耀庭 8 3循環(huán)移位指令 南開大學朱耀庭 1 ROL指令 循環(huán)左移 ROL指令 每執(zhí)行一次 每移1位 把最高位移到最低位 同時還把最高位移到CF 其操作示意如圖8 4所示 圖8 4ROL指令操作過程 動畫演示 南開大學朱耀庭 1 ROL指令 循環(huán)左移 當循環(huán)移位次數(shù)為1時 若循環(huán)左移以后操作數(shù)的最高位不等于CF 則將溢出標志OF置1否則OF 0 這可以用來表示移位前后的符號是否改變 OF 0 表示符號未變 ROL指令只影響狀態(tài)標志CF和OF 例8 3讀以下程序 并且說明輸入一個字符后輸出什么 南開大學朱耀庭 2 ROR指令 循環(huán)右移 ROR指令與ROL指令類似 只是目的操作數(shù) 字節(jié)或字 中的各位循環(huán)右移 而不是循環(huán)左移 操作示意如圖8 5所示 圖8 5ROR指令操作過程 動畫演示 南開大學朱耀庭 3 RCL指令 通過進位循環(huán)左移 RCL指令對目的操作數(shù)字節(jié)或字中的各位循環(huán)左移 進位標志CF被看作目的操作數(shù)的 一部分 每執(zhí)行一次 移動1位 CF的值循環(huán)移入目的操作數(shù)的低位 而目的操作數(shù)的高位移入CF 操作示意如圖8 6所示 圖8 6RCL指令操作過程 動畫演示 南開大學朱耀庭 4 RCR指令 通過進位循環(huán)右移 RCR指令與RCL指令類似 只是各位循環(huán)右移 而不是循環(huán)左移 操作示意如圖8 7所示 圖8 7RCR指令操作過程 動畫演示 南開大學朱耀庭 4 RCR指令 通過進位循環(huán)右移 循環(huán)移位與算術或邏輯移位不同 循環(huán)移位時移出操作數(shù)的位并不丟失 而是循環(huán)送回操作數(shù)的另一端 移位的位數(shù)也由計數(shù)值操作數(shù) 即COUNT 規(guī)定 這一點和算術或邏輯移位指令一樣 計數(shù)值可以指定為常數(shù)1 或指定為CL寄存器 循環(huán)移位指令可以對字節(jié)或字進行操作 因為它將移出的位移至CF 而且只要循環(huán)移位8位 對字節(jié) 或16位 對字 操作數(shù)就會恢復原狀 因此 可以利用循環(huán)移位后測試CF的方法測試字節(jié)或字的某一位是0還是1 方法是利用循環(huán)移位指令將要測試的那一位移入CF 然后由測試CF的條件轉(zhuǎn)移指令JC CF為1時轉(zhuǎn)移 或JNC CF為0時轉(zhuǎn)移 進行測試 如果再想恢復操作數(shù)原來的值 只要繼續(xù)用同樣的循環(huán)移位指令移完8位或16位即可 RCL和RCR這兩條帶進位標志的循環(huán)移位指令將進位標志看作是操作數(shù)的擴展部分 這就允許CF作為一位信息移入操作數(shù) 利用這一點可以實現(xiàn)多字節(jié)數(shù)的移位 南開大學朱耀庭 4 RCR指令 通過進位循環(huán)右移 例如 若有一個雙字數(shù) 它們或是放在兩個通用寄存器中 例如DX和AX 或是存放在連續(xù)的內(nèi)存字單元中 那么怎樣實現(xiàn)這4個字節(jié)數(shù)整個左移1位或整個右移1位呢 拿左移1位來說 可以先使低16位左移1位 再把高16位左移1位 其中的困難在于如何將低16位中的最高位移至高16位的最低位 用邏輯左移指令可以把低16位中的最高位移至進位標志CF中 而要把高16位也左移一位 并且將CF的值移至它的低位 必須用帶進位標志循環(huán)左移指令RCL來完成 即可以用以下指令實現(xiàn)之 SHLAX 1RCLDX 1或SHLFIRST WORD 1RCLSECOND WORD 1 南開大學朱耀庭 8 4邏輯運算指令應用 BCD碼的輸入輸出 二進制數(shù)的輸入 輸出 8 4 1 8 4 2 南開大學朱耀庭 8 4 1BCD碼的輸入輸出 例8 4非壓縮型BCD碼的輸入 ASCII碼轉(zhuǎn)換成非壓縮BCD碼 實例 題目 從鍵盤上輸入一個8位十進制數(shù) 要求將它以真正的非壓縮型BCD碼的形式存放在內(nèi)存輸入緩沖區(qū) 設計思路 需要將輸入的十進制數(shù)字 0 9 的ASCII碼轉(zhuǎn)換成對應的BCD碼 0 9數(shù)字的ASCII碼為30H 31H 39H 因此 只要用邏輯指令AND將其高4位清零 即為其對應的非壓縮型BCD碼 為此 需要在數(shù)據(jù)段分配一個具有8個字節(jié)的內(nèi)存輸入緩沖區(qū) 假設從十進制數(shù)的高位開始輸入 將輸入的數(shù)字轉(zhuǎn)換成對應的BCD碼后從低地址字節(jié)開始依次存放 其實現(xiàn)程序如下 例8 4非壓縮型BCD碼的輸入實例 南開大學朱耀庭 8 4 1BCD碼的輸入輸出 例8 5非壓縮型BCD碼的輸出 非壓縮型BCD碼轉(zhuǎn)換成ASCII碼 實例 題目 將內(nèi)存緩沖區(qū)中的十進制數(shù)字 非壓縮型BCD碼 顯示在屏幕上 設計思路 假設十進制數(shù)字低位存放在低地址字節(jié) 輸出時應從高位開始依次顯示出來 顯示輸出數(shù)字時 應將0 9數(shù)字轉(zhuǎn)換成ASCII碼 即用OR指令將其高4位拼上3 例8 5非壓縮型BCD碼的輸出實例 南開大學朱耀庭 8 4 1BCD碼的輸入輸出 例8 6壓縮型BCD碼的輸入實例 題目 輸入數(shù)字字符以ASCII碼形式存到內(nèi)存中 然后轉(zhuǎn)換成壓縮型BCD碼重新存到內(nèi)存中 設計思路 從高位開始輸入十進制數(shù)字 例如 3 2 4 9 5 以ASCII碼的形式從低地址字節(jié)開始依次存入ASC BUF 數(shù)字以空格鍵為結(jié)束 并且在接受數(shù)字字符時在CX寄存器里記下個數(shù) 若個數(shù)為奇數(shù)則將數(shù)字字符往后移動一個字節(jié) 空出的第1個字節(jié)填入 0 并將個數(shù)加1使之為偶數(shù)個 因此 個數(shù)減半為轉(zhuǎn)換成壓縮型BCD碼后所占的字節(jié)數(shù) 將這個數(shù)字存入BCD BUF緩沖區(qū)的第1個字節(jié) 然后 將ASC BUF中的ASCII碼的高4位清0 并用邏輯指令和移位指令將它們每兩位拼在一起 成為壓縮型BCD形式存入BCD BUF 從低地址的第二個字節(jié)開始依次存放 例8 6壓縮型BCD碼的輸入實例 南開大學朱耀庭 8 4 1BCD碼的輸入輸出 例8 7壓縮型BCD碼的輸出 題目 將內(nèi)存緩沖區(qū) BUF 中的壓縮型BCD碼在屏幕上顯示輸出 設計思路 假設十進制數(shù)字 壓縮型BCD碼 的低位放在低地址 因此輸出時需要從高地址 高位 開始 因為壓縮型BCD碼是一個字節(jié)里存放兩位十進制數(shù)字 所以將一個字節(jié)里的BCD碼顯示輸出時需要將兩位BCD碼分離出來 方法是 用SHR指令將其右移4位 用OR指令拼上30H使之轉(zhuǎn)換成ASCII碼并顯示出來 然后用AND指令將這個字節(jié)的低4位截取下來 拼上30H顯示出來 例8 7壓縮型BCD碼的輸出 南開大學朱耀庭 8 4 1BCD碼的輸入輸出 說明 若將一個8個字節(jié)長的十進制數(shù)字 16位 顯示輸出 用LOOP指令實現(xiàn)循環(huán)8次 則需用CX計循環(huán)次數(shù) 而用SHR指令右移4位時需要用CL計移位次數(shù) 這時就會將CX中循環(huán)的次數(shù)破壞掉 因此需要先將CX中的循環(huán)次數(shù)保存在一個存儲器或寄存器字里 比如BX 然后再將移位次數(shù)4送至CL 在LOOP指令前再將BX的值送回CX 以恢復CX的內(nèi)容 該程序執(zhí)行后輸出 9078008947500434 南開大學朱耀庭 8 4 2二進制數(shù)的輸入 輸出 例8 8從鍵盤上輸入十六進制數(shù)設計思路 從鍵盤上輸入的都是字符 即ASCII碼值 需要將其轉(zhuǎn)換成十六進制的數(shù) 比如輸入 14A0 轉(zhuǎn)換成十六進制數(shù)14A0H 存入一個字中 因此需要將0 9 A F的ASCII碼轉(zhuǎn)換成對應的十六進制數(shù)字 它們的對應關系如下 ASCII碼 30H 31H 39H 41H 42H 46H十六進制數(shù)字 00H 01H 09H 0AH 0BH 0F 由此可知 只要將0 的ASCII碼的高4位中的3去掉 就成為與其對應的十六進制數(shù)值了 而A F的ASCII碼比與之對應的十六進制數(shù)值均大37H 因此從ASCII碼中減去37H 剩下的就是相應的十六進制數(shù)值 例8 8從鍵盤上輸入十六進制數(shù) 南開大學朱耀庭 8 4 2二進制數(shù)的輸入 輸出 例8 9從鍵盤上輸入十進制數(shù)并將其化為二進制數(shù) 簡稱 十化二 輸入 設計思路 實現(xiàn)十化二輸入的程序與十六進制數(shù)的輸入程序極為相似 只需將輸入的數(shù)字0 9的ASCII碼轉(zhuǎn)換成對應的數(shù)值送至AL 在把每一位十進制數(shù)拼在一起時 首先將字緩沖區(qū)的內(nèi)容乘10 然后用算術加法指令ADD加上AX AH 0 的內(nèi)容 假設輸入十進制數(shù)字以逗號 字符作為一個數(shù)的結(jié)果 例如 鍵入3456 或34 例8 9從鍵盤上輸入十進制數(shù)并將其化為二進制數(shù) 南開大學朱耀庭 8 4 2二進制數(shù)的輸入 輸出 例8 10二化十輸出設計思路 假設把CX寄存器中的無符號整數(shù)進行二化十輸出 則需要把CX中的數(shù)值轉(zhuǎn)換成BCD碼 也就是要檢查CX中的二進制數(shù)包含有多少個10000 2710H 多少個1000 03E8H 多少個100 64H 多少個10 0AH 再把這些數(shù)以及剩下的個位數(shù)拼上30H 使之變成對應的ASCII碼 一位一位地顯示出來 例8 10二化十輸出 用這種方法進行二化十輸出不一定是個好的程序設計方法 而將無符號二進制數(shù)用 除十取余 的方法化為十進制數(shù)可能更好些 南開大學朱耀庭 ThankYou- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 匯編語言程序設計 匯編 語言程序設計 邏輯運算
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.zhongcaozhi.com.cn/p-6787337.html