gpt4 book ai didi

assembly - 项目组装 - 如何将标记添加到项目组装 "Learning Vowel Letters"代码?

转载 作者:行者123 更新时间:2023-12-04 10:41:22 25 4
gpt4 key购买 nike

这是我的小项目汇编代码,关于“赚取元音字母”。
它正在工作,但在问题结束时没有添加标记。
5 个问题,最迟必须添加标记,但不会添加。
对于每个正确的答案将添加一个标记。

第1页:学习
第 2 页:考试
第 3 页:退出

就像这样它工作。

; multi-segment executable file template.

data segment
firstpage db "learning Vowel letters e,o,a,i,u",10,13,"create by:alex",10,13,"1.stady",10,13,"2.exam",10,13,"3.exit" ,10,13,"$"
std1 db "Umbrella ----> an Umbrella" ,10,13,"$"
std2 db "bird ----> a bird ",10,13,"$"
std3 db "Ice cream ----> an Ice cream",10,13," $"
std4 db "car----> a car ",10,13,"$"
std5 db "Orange ---->an Orange",10,13," $"

qone db "desk ____ desk" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qtow db "apple ____apple" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qth db "table ____ table" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qfo db "egg ____ egg" ,10,13,"a) a",10,13,"b) an",10,13,"$"
qfi db "red ____ red" ,10,13,"a) a",10,13,"b) an",10,13,"$"

nl db 0,10,13,"$"

markze db "your mark is :0$"
markone db "your mark is :10$"
marktow db "your mark is :40$"
markth db "your mark is :60$"
markfo db "your mark is :80$"
markfi db "your mark is :100$"

count db 0

ends

stack segment
dw 128 dup(0)
ends
code segment
start:

mov ax, data
mov ds, ax

lea dx, firstpage
mov ah, 9
int 21h
mov ah,7
int 21h
mov dl,al
cmp dl,"1"
je t1
cmp dl,"2"
je t2
cmp dl,"3"
je soof

t1: mov ax,3
int 10h


lea dx,std1
mov ah,9
int 21h
mov ah,7
int 21h


lea dx,std2
mov ah ,9
int 21h
mov ah,7
int 21h

lea dx,std3
mov ah,9
int 21h
mov ah,7
int 21h


lea dx,std4
mov ah,9
int 21h
mov ah,7
int 21h

lea dx,std5
mov ah,9
int 21h
mov ah,7
int 21h


lea dx, firstpage
mov ah, 9
int 21h
mov ah,7
int 21h



t2: mov ax,3
int 10h

lea dx ,qone
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov ah,7
int 21h

mov bl,ah
cmp bl,"a"
je c1

cmp bl,"b"
je c0



lea dx ,qtow

mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h


mov bl,ah
cmp bl,"b"
je c2

cmp bl,"a"
je c0





lea dx ,qth
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,ah

cmp bl,"a"
je c3

cmp bl,"b"
je c0





lea dx ,qfo
mov ah,9
int 21h

lea dx,nl
mov ah,9
int 21h

mov ah,1
int 21h



mov bl,ah
cmp bl,"b"
je c4

cmp bl,"a"
je c0



lea dx ,qfi
mov ah,9
int 21h
lea dx,nl
mov ah,9
int 21h
mov ah,1
int 21h

mov bl,ah
cmp bl,"a"
je c5
cmp bl,"b"
je c0

c0:
cmp count,0
je mark0

c1:
cmp count,1
je mark1


c2:
cmp count, 2
je mark2

c3:
cmp count, 3
je mark3

c4:
cmp count,4
je mark4

c5:
cmp count,5
je mark5



mark0:
lea dx,markze
mov ah,9
int 21h
jmp soof

mark1:
lea dx,markone
mov ah,9
int 21h
jmp soof

mark2:
lea dx,marktow
mov ah,9
int 21h
jmp soof

mark3:
lea dx,markth
mov ah,9
int 21h
jmp soof

mark4:
lea dx,markfo
mov ah,9
int 21h
jmp soof
mark5:
lea dx,markfi
mov ah,9
int 21h
jmp soof




soof: mov ax, 4c00h
int 21h
ends

end start

最佳答案

nl    db 0,10,13,"$"


我认为来自 My assembly "quiz Multiply" code is not working? 的回答者而是意味着你写: nl db 10,13,"$" (没有零/逗号)

为什么这个版本不起作用

输入错误。

mov ah,1
int 21h
mov ah,7
int 21h
mov bl,ah


这两个 DOS 函数都输入 键盘上的字符。函数 01h 使用回声执行,函数 07h 不使用回声。
这两个函数所做的都是将结果留在 AH 中。注册您稍后复制到 BL登记。 结果总是只在AL注册 .当然,您只需要在此处包含这些功能之一。
mov ah, 01h
int 21h
mov bl, al

程序流程错误。

cmp bl,"a"
je c1
cmp bl,"b"
je c0
lea dx ,qtow
mov ah,9
int 21h


如果用户对第一个问题给出了正确的答案 (a),您将跳到 c1,在那里您尝试打分并终止程序。
如果用户对第一个问题给出了错误的答案 (b),您将跳到 c0,在那里您尝试给予(零)分并终止程序。
只有当用户提供非法输入时,您才会向他们提出第二个问题。
显然逻辑有问题!

您应该做的是每次给出正确答案时增加计数变量。在代码中,这意味着您 绕过 inc如果没有给出正确答案的说明 .
    ...
mov ah, 01h
int 21h
cmp al, "a" ; Correct answer to 1st question
jne Q2 ; was not given
inc count
Q2:
lea dx, qtow
mov ah, 09h
int 21h
mov ah, 01h
int 21h
cmp al, "b" ; Correct answer to 2nd question
jne Q3 ; was not given
inc count
Q3:
lea dx, qth
mov ah, 09h
int 21h
...

处理第五个最后一个问题的部分可以通过代码将标记打印在屏幕上。
    ...
Q5:
lea dx, qfi
mov ah, 09h
int 21h
mov ah, 01h
int 21h
cmp al, "a" ; Correct answer to 5th question
jne c0 ; was not given
inc count
c0:
...

关于assembly - 项目组装 - 如何将标记添加到项目组装 "Learning Vowel Letters"代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59912915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com