匯編記錄

匯編基礎(chǔ)習(xí)題

題1

編寫(xiě)一個(gè)程序,計(jì)算\frac{X*Y-Z}{X}的值。其中X、Y、Z均為16位帶符號(hào)數(shù),要求表達(dá)式的計(jì)算結(jié)果存放在數(shù)據(jù)段的RESULT單元中。

DATA SEGMENT
 X DW 2H
 Y DW 44H
 Z DW 8H
 RESULT DW ?
DATA ENDS

CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
START:
  MOV AX,DATA
  MOV DS,AX
  MOV AX,X
  MOV BX,Y
  IMUL BX           ;有符號(hào)乘
  SBB AX,Z          ;借位減
  IDIV X            ;有符號(hào)除
  MOV RESULT,AX
  JMP $
  CODE ENDS
END START

題2

設(shè)某班學(xué)生(10名)某門(mén)課程的成績(jī)存放在內(nèi)存中,試編程統(tǒng)計(jì)90分以上、80-89分、70-79分、60-69分、低于60分的學(xué)生人數(shù),并分別存放到A、B、C、D、E單元中。

DATA  SEGMENT
  TAB DB 60,70,80,90,77,88,76,69,74,58          ;10個(gè)學(xué)生成績(jī)
  A DB 0H
  B DB 0H
  C DB 0H
  D DB 0H
  E DB 0H
DATA ENDS

CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
START:
  MOV AX,DATA
  MOV DS,AX
  MOV BX,OFFSET TAB   ;初始化指針
  MOV CX,10           ;設(shè)置計(jì)數(shù)器初值
  SELECT:
   MOV AL,[BX]
   CMP AL,90                ;大于等于90
   JGE G1
   CMP AL,80                ;大于等于80
   JGE G2
   CMP AL,70                ;大于等于70
   JGE G3
   CMP AL,60                ;大于等于60
   JGE G4
   JMP G5                   ;其他
G1:
   INC A
   JMP ENDLOOP
G2:
   INC B
   JMP ENDLOOP
G3:
   INC C
   JMP ENDLOOP
G4:
   INC D
   JMP ENDLOOP
G5:
   INC E
   JMP ENDLOOP
  ENDLOOP:
    INC BX           ;指針移動(dòng) + 1
  LOOP  SELECT
  JMP $
 CODE ENDS
END START

題3

用主程序、子程序結(jié)構(gòu)實(shí)現(xiàn)判斷textdata(10個(gè)單元)中的數(shù)據(jù)是否為“0”~“F”的ASCII碼。若是,用十六進(jìn)制數(shù)覆蓋原單元,否則用0FFH覆蓋原單元。

DATA SEGMENT
 TEXTDATA DB 03h,30h,35h,41h,46h,57h,78h,91h,01h,02h          ;10個(gè)參數(shù)
 RUSTDATA DB 10 DUP(?)
 DO DB ?
 NUM DB ?
DATA ENDS

CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
  START PROC
  MOV AX,DATA
  MOV DS,AX
  MOV BX,OFFSET TEXTDATA  ;初始化指針
  MOV SI,OFFSET RUSTDATA
  MOV CX,10           ;設(shè)置計(jì)數(shù)器初值
  SELECT:
   MOV AL,[BX]
   CALL CHECK
   MOV [BX],AL
   MOV [SI],AL
   INC BX           ;指針移動(dòng) + 1
   INC SI           ;指針移動(dòng) + 1      
  LOOP  SELECT
  JMP $
  START ENDP

  ;子程序
  CHECK PROC
 CMP AL,'0'
 JGE CEK      ;判斷AL >= '0'
 JMP WRONG
CEK:
  CMP AL,'F'
  JLE RIGHT   ;判斷AL <= 'F'
  JMP WRONG
RIGHT: 
    RET
WRONG:
    MOV AL,0FFH
    RET
     
  CHECK ENDP
  CODE ENDS
END START
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容