汇编语言实验代码

电子科技大学信软学院汇编语言选修课2024年实验代码

实验1——表达式运算程序设计

实现内容

编写源程序,计算表达式: Z=(5X+2Y-7)/2
设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ。

代码

DATA SEGMENT  
    VARX DB 3       ;VARX,VARY赋值 
    VARY DB 3  
    VARZ DB ?      ;不分配常量,用于存放结果  
DATA ENDS  
CODE SEGMENT  
    ASSUME CS:CODE,DS:DATA  
START:  
    mov ax,DATA
    mov ds,ax       ;初始化ds

    mov al,[VARX]
    mov ah,5
    mul ah
    mov bx,ax       ;5X

    mov ax,0        ;清零
    mov al,[VARY]
    shl ax,1        ;2Y

    add ax,bx
    sub ax,7
    shr ax,1        ;/2
    mov [VARZ],ax

    MOV AH, 4CH
        INT 21H
CODE ends
END START

实验2——分支程序与循环程序设计

实现内容

分别统计下列20个数中小于零、大于等于零且小于等于5、大于5的数据个数,分别存入字节单元RES1、RES2和RES3中并显示在屏幕上。

BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51

屏幕上显示:6 4 10

代码

assume cs:codesg,ds:data
data segment
    RES1 DB 6
    RES2 DB 4
    RES3 DB 10  ;三种类型的统计结果
data ends
codesg segment
start:
    mov ax,data
    mov ds,ax

    mov al,ds:[RES1]
    call print_byte
    mov al,ds:[RES2] 
    call print_byte
    mov al,ds:[RES3]
    call print_byte

    mov ax,4c00H
    int 21h

print_byte:     ;打印
    mov ah,0
    call to_ascii
    mov ah, 2
    mov dl, al
    int 21h
    mov dl, 20h  ; 添加换行符
    int 21h
    ret

to_ascii:
    cmp al, 10
    jb less_than_10
    ; 大于等于 10 的情况
    mov bl,10   ; 取出十位数
    div bl
    mov bl,ah   ; 保存个位数
    mov ah, 2   ; 打印十位数
    add al,30h  ;ascii转换
    mov dl, al
    int 21h
    add bl,30h  ;ascii转换
    mov al,bl   ;移给al,方便print_byte打印

    ret
less_than_10:
    add al, 30h  ; 小于 10 的情况
    ret

codesg ends
end start
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇